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

欢迎!请在 关于 页面获取更多关于如何使用本网站的信息。

+1
Clojure
已关闭

在 {{target/clojure.jar}} (或 Maven 仓库中的 jars)的 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}},类路径不能在命令行中修改({{-cp}} 被忽略),只能作为 Manifest 中的 Class-Path 条目。
我更愿意看到

`没有主 Manifest 属性...`
由 {{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 报告)
...