如何运行包含 clojure 和 java 代码编译的类文件的 jar 文件。 java文件包含main方法
java -cp clojure.jar clojure.maincompile.clj 这是编译 clojure 代码。 javacCalculateSum.java编译java代码。 jar cvf sum.jar *.class 获取类文件的 jar 文件。
javaCalculateSum 正在运行 main 并正确给出输出。 如何从java环境运行jar文件? 就像java -cp clojure.jar;sum.jar clojure.mainCalculateSum,其中CalculateSum是主类。
示例代码 _utils.clj_
(ns utils
(:gen-class :name 实用工具 :methods [#^{:static true} [sum [java.util.Collection] long]])) (defn sumx [coll] (reduce + coll)) (defn -sum [coll] (sumx coll))
compile.clj
(set! *compile-path* "./") (编译'utils)
CalculateSum.java 公共类计算和{ 公共静态无效主(字符串[] args){ java.util.List
xs.add(5); System.out.println(Utils.sum(xs)); } }
目的是从这段代码中创建 jar 文件。并运行jar文件
java应该调用clojure代码,执行它并打印结果
java -cp clojure.jar clojure.main compile.clj this is compiling the clojure code.
javac CalculateSum.java compiling java code.
jar cvf sum.jar *.class getting jar file of class files.
java CalculateSum is running main and giving output correctly.
How to run jar file from java environment?
like java -cp clojure.jar;sum.jar clojure.main CalculateSum where CalculateSum is main class.
sample code
_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.javapublic 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));
}
}
Aim is to craete jar file out of this code. and run jar file
java should call clojure code, execute it and print result
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好的,有两件事:
要从 jar 文件运行它,而不是使其成为可执行的 jar 文件,您应该只需要:
或者可能(如果它在执行时需要closure.jar中的类)
将其转换为可以运行的可执行 jar 文件
您需要一个 manifest 文件,其中包含 Main -Class 属性允许您设置入口点,并且可能是Class-Path 属性将closure.jar 文件添加到jar 的类路径.
请点击链接了解更多详情。
Okay, so there are two things:
To run it just from a jar file rather than making it an executable jar file, you should be fine with just:
or possibly (if it needs classes from closure.jar at execution time)
To turn it into an executable jar file which you can run with
you'll need a manifest file including a Main-Class attribute letting you set the entry point, and possibly a Class-Path attribute to add the closure.jar file to the jar's classpath.
Follow the links for more details.