请在2024了一年一度的Clojure调查中分享您的观点!

欢迎!请参阅关于页面以获得更多关于如何使用本站的信息。

+1
Clojure
已关闭

{{target/clojure.jar}}(或在Maven仓库中的.jars)的清单中设置了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}}类路径不能在命令行中修改({{-cp}}被忽略),而只能作为清单中的Class-Path条目。
我更希望看到如下的输出

`no main manifest attribute...`
被java报告,而不是在异常和堆栈跟踪情况下报告

审核者: Alex Miller - 正确构建了没有主类的正常Clojure,但继续构建局部jar,该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报告)
...