gpt4 book ai didi

clojure - 如何运行由 'lein jar' 命令制作的 jar?

转载 作者:行者123 更新时间:2023-12-03 23:51:28 25 4
gpt4 key购买 nike

这是 this question 的后续.

运行“lein jar”后,我得到“myproject-1.0.0-SNAPSHOT.jar”,其中不包含 clojure-1.2.0-beta1.jar 和 clojure-contrib-1.2.0-beta1.jar。

运行 'lein uberjar' 会给我两个 jar 文件。第一个(以 -standalone.jar 结尾)是包含所有内容的 jar,第二个与使用“lein jar”生成的 jar 相同。

这是第二个 jar 的问题。运行第一个 jar 没有问题,正如我在前面 post 中解释的那样.

当我跑

java -cp PATH_TO_THE_CLOJURE_AND_CONTRIB.jar:$CLASSPATH -jar myproject-1.0.0-SNAPSHOT.jar'

,我收到以下错误。

引起:java.lang.ClassNotFoundException:clojure.lang.IFn
在 java.net.URLClassLoader$1.run(URLClassLoader.java:202)
在 java.security.AccessController.doPrivileged(Native Method)
在 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:307)
在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
在 java.lang.ClassLoader.loadClass(ClassLoader.java:248)

可能有什么问题,如果我使用 -cp 选项指向 jar 文件,我想我可以以与“myproject-1.0.0-SNAPSHOT-standalone.jar”相同的方式使用“myproject-1.0.0-SNAPSHOT.jar”。

还有什么我必须做的吗?

添加

java -cp ALLTHE_JAR_PATH myproject.core

解决了这个问题。

最佳答案

如果您使用的是 Leiningen 1.2,您可能会遇到一个错误,即在创建 uberjar 之前会删除依赖项(显然违背了 uberjar 的观点)。请降级到 1.1 并等待新版本(应该很快就会发布)或使用 lein 的 HEAD 结帐(如 lein 的 README 中关于入侵 Leiningen 的部分所述)。

一旦你这样做了,你应该能够用 lein uberjar 生成一个独立的 jar。然后说 java -jar name-of-your-standalone.jar启动您的应用程序。

作为替代方案,您可以使用 lein jar 创建一个普通的 jar。并说类似 java -cp '$PROJECT_ROOT/lib/*:your-app.jar' your-app.main (其中 your-app.main 是您的应用程序的主类;当然,也可以用适当的路径替换 $PROJECT_ROOT 并提供到 your-app.jar 的路径)。 lib/*东西只适用于 JDK 1.6;使用 1.5,您必须分别包含每个 jar。 注意使用 -jar 时, -cp$CLASSPATH被忽略;仅考虑 jar list (如果有)中指定的类路径。

关于clojure - 如何运行由 'lein jar' 命令制作的 jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3400665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com