如何运行包含clojure和java代码编译类文件的jar文件。java文件包含main方法
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_如何运行包含clojure和java代码编译类文件的jar文件。java文件包含main方法,java,clojure,Java,Clojure,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是主类
(ns-utils
(:gen-class:name-Utils)
:methods[#^{:static true}[sum[java.util.Collection]long]]
(减液量[coll](减液量+coll))
(defn-sum[coll](sumx coll))
compile.clj
(设置!*编译路径*“/”)
(编译utils)
CalculateSum.java
公共类CalculateSum{
公共静态void main(字符串[]args){
java.util.List xs=new java.util.ArrayList();
xs.添加(10);
xs.add(5);
System.out.println(Utils.sum(xs));
}
}
目的是从这段代码中删除jar文件。并运行jar文件
java应该调用clojure代码,执行它并打印结果好的,所以有两件事:
- 要仅从jar文件运行它,而不是使其成为可执行的jar文件,只需执行以下操作即可:
或者可能(如果在执行时需要closure.jar中的类)java -cp sum.jar CalculateSum
- 将其转换为可执行的jar文件,您可以使用它运行
您需要一个包含主类属性的文件,该文件允许您设置,并且可能还需要一个类路径属性java -jar sum.jar
按照链接查看更多详细信息。不清楚是否所有类都不在jar文件中,也不清楚jar文件是否包含声明主类、类路径依赖项等的清单。一些示例代码可能会有用。@JonSkeet我已经编辑了这个问题,现在您也可以看到代码。但是没有jar文件manaifest的迹象。还不清楚编译后的clojure代码会在哪里结束-您是否也将其包含在jar文件中?utils.clj和CalculateSum.java的编译类文件被添加到jar文件中,我没有类似于清单的内容。
java -jar sum.jar