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

时间:2011-10-12 06:11:11

标签: 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是主类。

示例代码 _ 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代码,执行它并打印结果

1 个答案:

答案 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

点击链接了解更多详情。