2010-12-04 65 views
13

我有我的Clojure應用程序包裝在一個罐子裏。我推出它爲:Clojure:如何從jar中運行我的main?

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

這是從這個罐子啓動我的應用程序的唯一方法?具體而言,我很想看到的簡單的東西:

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

編譯:http://alexott.net/en/clojure/ClojureLein.html - 瓦特/ Leiningen, http://clojure.org/compilation - 沒有它。 – ffriend 2010-12-04 22:18:00

回答

12

使用

(ns foo.main 
    (:gen-class) 

在您的主要源代碼中生成命名空間包的限定類文件。將您的Leiningen項目文件添加到

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

。 「雷音罐子」之後,你可以啓動使用元數據從JAR嵌入清單文件的應用程序:

java -jar foo-YOURVERSION.jar 
4

你如果把與leiningens uberjar任務,那麼所有你需要做的就是運行你的應用程序,

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

假設您在`project.clj`文件中配置了`main`選項。 – 2010-12-04 19:31:53

相關問題