Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何运行包含clojure和java代码编译类文件的jar文件。java文件包含main方法_Java_Clojure - Fatal编程技术网

如何运行包含clojure和java代码编译类文件的jar文件。java文件包含main方法

如何运行包含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是主类

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]] (减液量[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文件,只需执行以下操作即可:

    java -cp sum.jar CalculateSum
    
    或者可能(如果在执行时需要closure.jar中的类)

  • 将其转换为可执行的jar文件,您可以使用它运行

    java -jar sum.jar
    
    您需要一个包含主类属性的文件,该文件允许您设置,并且可能还需要一个类路径属性


按照链接查看更多详细信息。

不清楚是否所有类都不在jar文件中,也不清楚jar文件是否包含声明主类、类路径依赖项等的清单。一些示例代码可能会有用。@JonSkeet我已经编辑了这个问题,现在您也可以看到代码。但是没有jar文件manaifest的迹象。还不清楚编译后的clojure代码会在哪里结束-您是否也将其包含在jar文件中?utils.clj和CalculateSum.java的编译类文件被添加到jar文件中,我没有类似于清单的内容。
java -jar sum.jar