Ha pasado un tiempo desde que publiqué esta pregunta y pensé que mantendría lo que he encontrado desde entonces para cualquiera que necesite esta pregunta respondió.
Ahora uso Leiningen para administrar mis proyectos, aunque he empezado a jugar con cljr que es un administrador de repuestos y paquetes que lo complementa. Cualquiera de estos hace que sea mucho más simple generar un archivo jar ejecutable.
Tomando Leiningen como ejemplo, configúralo usando las instrucciones en el sitio y luego llama al lein new
en tu área de trabajo. Esto creará una carpeta para alojar sus proyectos, así como una subcarpeta para su fuente y probará un archivo léame y un archivo project.clj.
Edite project.clj con las dependencias que va a utilizar. Las dependencias de desarrollador son dependencias que necesita exclusivamente para el desarrollo, como swank-clojure, como se muestra en el ejemplo a continuación.
(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])
me parece Swank-clojure útil como usted puede entonces escribir lein swank
para iniciar una instancia Swank que se puede conectar a través de emacs.
: main define qué namespace contiene la función -main.
Llamando lein uberjar
creará un jar independiente que se ejecutará.
¡Espero que ayude a cualquiera que haya tenido mi problema!
'Error: No se pudo encontrar o cargar la clase principal [prueba.core]'. He incluido ': main' y su valor correspondiente, y tengo una función' -main' que es pública en ese espacio de nombres. ¿Alguna idea sobre lo que podría estar yendo mal? – m0skit0
Hola @ m0skit0, ha pasado un tiempo desde que escribí esto. ¿Ha estructurado sus directorios de forma adecuada? Con eso me refiero es su 'project.clj' en una carpeta que contiene' src' que contiene 'prueba' que contiene' core.clj'? ¿Usó 'lein new' y luego editó el archivo 'core.clj' creado? Si no, ¿podría explicar lo que ha hecho con la mayor claridad posible? –
toofarsideways
La estructura del proyecto es correcta porque fue creada por Leiningen. Finalmente lo hice funcionar, usando la siguiente sintaxis ': main root.scriptlauncher: aot [root.scriptlauncher]' para el 'defproject'. – m0skit0