2010-12-04 22 views
13

Tengo mi aplicación Clojure empacada en un frasco. Lo estoy lanzando como:Clojure: ¿Cómo ejecutar mi main desde jar?

java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main -e "(use 'foo.main)(-main)" 

¿Es esta la única manera de iniciar mi aplicación desde este contenedor? En concreto, me gustaría ver algo tan simple como:

java -cp lib/clojure-1.2.0.jar:my-app.jar clojure.main foo.main 
+0

compilarlo: http://alexott.net/en/clojure/ClojureLein.html - w/Leiningen, http://clojure.org/compilation - sin él. – ffriend

Respuesta

12

Uso

(ns foo.main 
    (:gen-class) 

en su fuente principal para generar el archivo de clase calificado del paquete de espacio de nombres. Agregue

:main foo.main 
:manifest {"Class-Path" "lib/clojure-1.2.0.jar"} 

a su archivo de proyecto Leiningen. Después de "tarro de Lein" puede puesta en marcha de la aplicación usando los metadatos del archivo de manifiesto JAR-incrustado:

java -jar foo-YOURVERSION.jar 
4

Si empaca su aplicación con leiningens uberjar tarea, entonces, todo lo que necesita hacer es correr,

java -jar name-of-your-app.jar 
+0

Siempre que haya configurado la opción 'main' en el archivo' project.clj'. –

Cuestiones relacionadas