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

欢迎!请访问关于页面了解有关如何使用该工具的更多信息。

+1 投票
Clojure
已关闭

{{target/clojure.jar}}(或在Maven仓库中的jar)中的manifest中设置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条目中。
我更希望看到清晰的

`no main manifest attribute...`
由{{java}}报告,而不是在这样的情况下出现ExIIError和堆栈跟踪。

筛选: Alex Miller - 正确构建没有主类的Clojure,但继续构建带有主类的本地jar包装(其中包含特定依赖项)。

关闭注释: 已固定在1.10.2-rc1中

5 答案

0 投票

评论由:alexmiller制作

谢谢,这个主意不错。

0 投票

评论人:pzygielo

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

0 投票

评论由:alexmiller制作

我们试图使1.10.1的更改非常集中,所以它将等待1.11。

0 投票

评论人:pzygielo

明白了,谢谢。

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