我正在尝试创建一个可以java -p <jar file> -m <module>
在 Java 9.0.1 上运行的模块化可执行 jar 文件。
这在使用 创建 jar 时按预期工作,但在使用and生成时jar cfe test.jar test.Main -C classes/ .
会抛出。module test does not have a MainClass attribute, use -m <module>/<main-class>
mvn package
mvn assembly:single
这些 maven 生成的 jar 仍然可以java -p test.jar -m test/test.Main
使用java -jar test.jar
.
我检查了 jar 内容jar xf test.jar
,发现 jar 完全一样,除了清单(见下文):
Manifest-Version: 1.0
Created-By: 9.0.1 (Oracle Corporation)
Main-Class: test.Main
和
Manifest-Version: 1.0
Archiver-Version: Plexus Archiver
Created-By: Apache Maven
Built-By: testuser
Build-Jdk: 9.0.1
Main-Class: test.Main
java -p test.jar -m test
值得注意的是,在指定工作清单时仍然无法使用:
$ jar cfm test.jar test-contents/META-INF/MANIFEST.MF -C classes/ .
$ java -p test.jar -m test
module test does not have a MainClass attribute, use -m <module>/<main-class>
编辑:具有预期行为的回购: https ://github.com/deontologic/test