java -cp clojure.jar clojure.main compile.clj 这是编译clojure代码。 javac CalculateSum.java 编译java代码。 jar cvf sum.jar * .class 获取类文件的jar文件。
java CalculateSum 正在运行main并正确输出。 如何从java环境运行jar文件? 例如 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代码,执行它并打印结果
答案 0 :(得分:1)
好的,所以有两件事:
要从 jar文件中运行而不是将其作为可执行的jar文件,你应该没问题:
java -cp sum.jar CalculateSum
或者可能(如果在执行时需要来自closure.jar的类)
java -cp closure.jar;sum.jar CalculateSum
将其转换为可以使用
运行的可执行jar文件java -jar sum.jar
您需要一个包含Main-Class属性的manifest文件,以便将entry point和可能的Class-Path属性设置为add the closure.jar file to the jar's classpath。
点击链接了解更多详情。