java -cp clojure.jar clojure.main compile.clj這是編譯clojure代碼。 javac CalculateSum.java編譯java代碼。 jar cvf sum.jar * .class獲取類文件的jar文件。如何運行包含clojure和java代碼編譯的類文件的jar文件。 java文件包含主要方法
java CalculateSum正在運行main並給出正確的輸出。 如何從java環境運行jar文件? like java -cp clojure.jar; sum.jar clojure.main CalculateSum其中CalculateSum是主類。
示例代碼 _ utils.clj _
(ns utils
(:gen-class :name Utils :methods [#^{:static true} [sum [java.util.Collection] long]])) (defn sumx [coll] (reduce + coll)) (defn -sum [coll] (sumx coll))
compile.clj
(set! *compile-path* "./") (compile 'utils)
CalculateSum.java public class CalculateSum { public static void main(String[] args) { java.util.List<Integer> xs = new java.util.ArrayList<Integer>(); xs.add(10);
xs.add(5); System.out.println(Utils.sum(xs)); } }
目標是使jar文件不符合此代碼。並運行jar文件
的java應該叫Clojure的代碼,執行它,並打印結果
目前還不清楚jar文件中的所有類是否都是no,以及jar文件是否包含說明主類,類路徑依賴關係等的清單。一些示例代碼將會很有用。 –
@JonSkeet我編輯了這個問題,現在你可以看到代碼了。 – vikbehal
但沒有一個jar文件manaifest的跡象。編譯的clojure代碼結束的地方也不清楚 - 你是否也將它包含在jar文件中? –