将clojure作为JAVA文件运行

将clojure作为JAVA文件运行,java,jar,clojure,jvm,Java,Jar,Clojure,Jvm,是否可以使用JAR cf JAR file输入文件命令从clojure文件构建一个JAR文件,然后在另一台机器上(没有clojure)运行它,就像使用java file命令一样 在另一台可以访问java但不能访问clojure的计算机上执行clojure程序的最佳方式是什么 绝对 做到这一点最简单的方法是使用来管理您的项目。设置好后,只需呼叫: lein uberjar 要在core.clj中生成可移植的.jar文件。您需要在ns宏中添加gen类,如下所示: (ns test.core

是否可以使用
JAR cf JAR file输入文件
命令从clojure文件构建一个JAR文件,然后在另一台机器上(没有clojure)运行它,就像使用java file命令一样

在另一台可以访问java但不能访问clojure的计算机上执行clojure程序的最佳方式是什么

绝对

做到这一点最简单的方法是使用来管理您的项目。设置好后,只需呼叫:

lein uberjar

要在core.clj中生成可移植的.jar文件。

您需要在ns宏中添加gen类,如下所示:

(ns test.core
   ...........
   (:gen-class))
下一次运行
lein uberjar
下一次从项目根文件夹运行

java -jar target/test...standalone.jar

因此,步骤是:
lein new my file
cd到目录,
lein uberjar
,然后我可以发送
project.clj
文件,例如每封电子邮件发送给某个人,他运行
java project.clj
?我说的对吗?不,project.clj管理版本、依赖项等。Lein需要它,Lein uberjar生成一个jar文件,您可以发送给某人并用java运行。我收到一个错误,我看不出我在做什么错误:我创建了一个名为test(Lein new test)的新项目,然后从test目录中运行lein-uberjar,在目标目录中创建两个jar文件:
test-0.1.0-SNAPSHOT.jar
test-0.1.0-SNAPSHOT-standalone.jar
。然后我从目标目录
java test-0.1.0-SNAPSHOT.jar
中运行,它说:拾取了java_工具选项:-javaagent:/usr/share/java/jayatanaag.jar错误:找不到或加载主类test-0.1.0-SNAPSHOT.jar在您的项目中。clj,您需要指定一个键/值对:main somenamespace。它将在该名称空间中查找-main函数?与src/file name/core.clj中的ns相同?我这样做了,它会启动REPL!项目根文件夹是在我运行新测试时创建的测试文件夹吗?这就是作为java可执行文件运行clojure程序的方式?这是否与lein的版本差异或类似的东西有关?顺便说一句,这是我的test/src/test/core.clj:
(ns test.core(:gen class))(defn foo“我做的不多。”[x](println x“你好,世界!”)
这对我很有效。我刚刚上传了一个演示项目。你能查一下吗?只需检查core.clj和project.clj,看看它是否有任何不同。您应该会在根文件夹中看到project.clj文件。如果我执行
lein version
我会得到
Leiningen 2.5.1 on Java 1.8.0\u 45 Java HotSpot(TM)64位服务器VM
,您会得到什么?我得到:
Leiningen 2.5.1 on Java 1.7.0\u 79 OpenJDK服务器VM