È passato un po 'di tempo da quando ho postato questa domanda e ho pensato che avrei mantenuto quello che ho trovato da allora per chiunque abbia bisogno questa domanda ha risposto.
Ora utilizzo Leiningen per gestire i miei progetti anche se ho iniziato a giocare con cljr che è un repl e gestore di pacchetti che lo integra. Ognuno di questi rende molto più semplice la creazione di un file jar eseguibile.
Prendendo Leiningen come esempio, configurarlo utilizzando le istruzioni sul sito e quindi chiamare lein new
nell'area di lavoro. Questo creerà una cartella per ospitare i tuoi progetti e una sottocartella per la tua fonte e testerà un file readme e un file project.clj.
Modificare project.clj con le dipendenze che verranno utilizzate. Le dipendenze degli sviluppatori sono dipendenze di cui hai bisogno esclusivamente per lo sviluppo, come ad esempio lo swank-clojure mostrato nell'esempio seguente.
(defproject myproject "0.0.1-SNAPSHOT"
:description "My Personal Project."
:url "http://example.com/my-project"
:dependencies [[org.clojure/clojure "1.1.0"]
[org.clojure/clojure-contrib "1.1.0"]
[**other dependencies**]]
:dev-dependencies [[swank-clojure "1.2.1"]]
:main [org.myproject.core])
trovo Swank-clojure utile come si può digitare lein swank
per avviare un'istanza Swank quale è possibile collegare a via emacs.
: main definisce quale spazio dei nomi contiene la funzione -main.
La chiamata lein uberjar
creerà un jar autonomo che verrà quindi eseguito.
Speriamo che questo aiuti chiunque abbia avuto il mio problema!
'Errore: impossibile trovare o caricare la classe principale [prueba.core]'. Ho incluso ': main' e il suo valore corrispondente, e ho una funzione' -main' che è pubblica in quel namespace. Qualche idea su cosa potrebbe andare storto? – m0skit0
Ciao @ m0skit0, è da un po 'che non scrivo questo. Hai strutturato in modo appropriato le tue directory? Con ciò intendo il tuo 'project.clj' in una cartella contenente' src' contenente 'prueba' contenente' core.clj'? Hai usato 'lein new' e poi hai modificato il file 'core.clj' creato? In caso contrario, potresti spiegare cosa hai fatto nel modo più chiaro possibile? –
toofarsideways
La struttura del progetto è corretta perché è stata creata da Leiningen. Finalmente ho funzionato, usando la seguente sintassi ': root root.scriptlauncher: aot [root.scriptlauncher]' per 'defproject'. – m0skit0