公告:魔扣目录网为广大站长提供免费收录网站服务,提交前请做好本站友链:【 网站目录:https://www.morko.net 】, 免友链快审服务(50元/站),

点击这里在线咨询客服
新站提交
  • 网站:51998
  • 待审:31
  • 小程序:12
  • 文章:1030137
  • 会员:747

本文介绍了JPMS/Jigsaw模块中缺少主类的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试创建一个模块化的可执行JAR文件,该文件可以在Java 9.0.1上使用java -p <jar file> -m <module>运行。

使用jar cfe test.jar test.Main -C classes/ .创建JAR时,这会正常工作,但在使用mvn packagemvn assembly:single生成JAR时,会抛出module test does not have a MainClass attribute, use -m <module>/<main-class>

这些maven生成的JAR仍然使用java -p test.jar -m test/test.Main工作,所有JAR使用java -jar test.jar工作在类路径上。


我使用jar xf test.jar检查了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

推荐答案

我也不能在jar tool文档中准确地找到这一点,但jmod tool定义得更好一些。

--main-class class-name 

指定要记录在MODULE-info.class文件中的主类。

我可以进一步研究JDK代码,执行不同命令时的行为似乎与ModuleDescriptor.mainClass()mainClass属性有关。

因为在使用--main-class标志打包JAR时,模块描述符中的条目应该用于执行模块,而不需要在执行期间指定主类的完全限定名。

另一方面,这不是真的using the maven jar creation,并且可能会在您发现的未来升级中修复。


有关以下工作原理的更多信息:

java -jar test-1.0.0-SNAPSHOT-jar-with-dependencies.jar

如果指定了-jar选项,则其参数是包含应用程序的类和资源文件的JAR文件的名称。启动类必须由其清单文件(META-INF/MANIFEST.MF)中的Main-Class清单标头指示

指定完全限定名的原因非常明显:

java -p target/test-1.0.0-SNAPSHOT-jar-with-dependencies.jar -m test/test.Main

这篇关于JPMS/Jigsaw模块中缺少主类的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,

分享到:
标签:Jigsaw JPMS 模块 缺少
用户无头像

网友整理

注册时间:

网站:5 个   小程序:0 个  文章:12 篇

  • 51998

    网站

  • 12

    小程序

  • 1030137

    文章

  • 747

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

数独大挑战2018-06-03

数独一种数学游戏,玩家需要根据9

答题星2018-06-03

您可以通过答题星轻松地创建试卷

全阶人生考试2018-06-03

各种考试题,题库,初中,高中,大学四六

运动步数有氧达人2018-06-03

记录运动步数,积累氧气值。还可偷

每日养生app2018-06-03

每日养生,天天健康

体育训练成绩评定2018-06-03

通用课目体育训练成绩评定