2015-09-22 74 views
1

是否有可能使用jar cf jar-file input-file(s)命令,然後在另一臺機器上運行它(不Clojure)都喜歡用java文件命令建立從Clojure的文件的JAR文件?Clojure的運行如Java文件

什麼是它可以訪問Java,但不Clojure的另一臺計算機上執行程序的Clojure的最佳方式?

回答

1

絕對!

要做到這一點,最簡單的方法是使用Leiningen來管理您的項目。一旦你有一個project.clj成立,它是那樣簡單調用:

lein uberjar 

產生便攜式.jar文件。

+0

這樣的步驟會是:'將新的my-file'光盤放入目錄,'lein uberjar',然後我可以發送'project.clj'文件給每個電子郵件給某個人,他運行'java project.clj'?我對嗎? – amirteymuri

+0

不,project.clj管理版本,依賴關係等.Lein需要它,lein uberjar生成一個jar文件,你可以發送給某人並使用java運行。 – jwde

+0

以及我得到一個錯誤,我不能看到我在做什麼錯誤:我創建了一個名爲測試(lein新測試)的新項目,然後從測試目錄中運行lein uberjar,該目錄在目標目錄中創建兩個jar文件: 'test-0.1.0-SNAPSHOT.jar'和'test-0.1.0-SNAPSHOT-standalone.jar'。然後我從目標目錄'Java測試-0.1.0-SNAPSHOT.jar'內運行,它說:拿起JAVA_TOOL_OPTIONS:-javaagent:/usr/share/java/jayatanaag.jar 錯誤:無法找到或加載主class test-0.1.0-SNAPSHOT.jar – amirteymuri

1

在你core.clj您需要添加根級在納秒宏是這樣的:從項目的根文件夾

(ns test.core 
    ........... 
    (:gen-class)) 

下一個運行lein uberjar 下次運行

java -jar target/test...standalone.jar 
+0

我做到了這一點,它啓動了REPL!項目根文件夾是當我運行'lein new test'時創建的測試文件夾?這是如何運行clojure程序作爲java可執行文件?這是否與lein或類似的版本差異有關?順便說一下,這是我的測試/ src/test/core.clj:'(ns test.core (:gen-class)) (defn foo 「我不會做很多事情。」 [x ] (println x「Hello,World!」))' – amirteymuri

+0

它爲我工作。我剛剛在這裏上傳了一個演示項目https://github.com/bit-twit/konstantinopol。你能檢查一下嗎?只需檢查core.clj和project.clj,看看它是否有任何區別 –

+0

是,由lein新測試創建的文件夾。您應該在根文件夾中看到project.clj文件。 –