2024 年Clojure状态调查中分享您的想法!

欢迎!请查看关于页面以了解更多关于如何使用本网站的信息。

+1
Clojure
已关闭

在{{target/clojure.jar}}(或Maven仓库中的jar包)的manifests中设置了Main-Class,给人的印象是它们可以作为独立的JAR打包应用程序运行。

然而使用
`java -jar clojure-${version}.jar`
会得到

`

Exception in thread "main" java.lang.ExceptionInInitializerError
at clojure.main.<clinit>(main.java:20)
Caused by: Syntax error compiling at (clojure/main.clj:1:1).
at clojure.lang.Compiler.load(Compiler.java:7647)
...
... 1 more
Caused by: java.io.FileNotFoundException: Could not locate clojure/spec/alpha__init.class, clojure/spec/alpha.clj or clojure/spec/alpha.cljc on classpath.
at clojure.lang.RT.load(RT.java:466)
at clojure.lang.RT.load(RT.java:428)

`

(对于在本地配置文件中构建的顶层{{clojure.jar}}可以完美工作,如果依赖项已经被阴影处理的话。)

然而,对于{{java -jar}}来说,无法在命令行中修改classpath({{-cp}}会被忽略),只能作为manifest中的Class-Path条目。
我希望看到以下清晰的错误信息由{{java}}报告,而不是在这种情况下触发ExIIError和堆栈跟踪。

`no main manifest attribute...`
我在这种情况下报告。

已审核: Alex Miller - 正确构建了不带main类的普通Clojure,但继续构建包含spec依赖项的本地jar。

以以下备注关闭:在1.10.2-rc1中修复

5 答案

0

评论由:alexmiller 发布

谢谢,好主意。

0

评论由:pzygielo 发布

我看到它将修复版本分配为1.11,但我还看到了为1.10.1的准备工作。CLJ-2459是否也可以包含在1.10.1中?

0
by

评论由:alexmiller 发布

我们试图让1.10.1版本的改动始终保持专注,因此它将等待1.11版本。

0
by

评论由:pzygielo 发布

明白了,谢谢。

0
by
参考资料:https://clojure.atlassian.net/browse/CLJ-2459 (由pzygielo报告)
...