Maven打包模块化JavaFX项目集成MySQL connector java报错如何解决
问题解决方案
你遇到的两个问题可以分别按以下步骤处理:
1. 解决「no main manifest attribute」报错
这个报错是因为默认Maven打包时没有在jar包的MANIFEST.MF文件中声明主类信息,你需要在pom.xml的plugins节点下新增maven-jar-plugin配置:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>3.2.0</version> <configuration> <archive> <manifest> <mainClass>AccountZeyny/org.openjfx.Main</mainClass> </manifest> </archive> </configuration> </plugin>
如果你需要打包含所有依赖的可执行fat jar,建议额外配置maven-shade-plugin,把JavaFX、MySQL驱动等依赖一起打进jar包,避免运行时缺失类的问题:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>shaded</shadedClassifierName> </configuration> </execution> </executions> </plugin>
配置完成后重新打包,生成的带shaded后缀的jar包就可以直接运行。
2. 解决「Required filename-based automodules detected」警告
这个警告不影响项目正常运行,触发原因是你使用的mysql-connector-java 8.0.25版本没有正式的JPMS模块描述文件,被JDK识别为基于文件名的自动模块,警告只是提醒你不要将依赖自动模块的项目发布到公共Maven仓库,私有场景使用完全没问题。
如果想要彻底消除警告,可以将MySQL驱动升级到已经支持JPMS的更高版本,比如8.0.33及以上版本,官方已经添加了正式的模块描述。
内容的提问来源于stack exchange,提问作者احمد ربايعة
相关产品推荐
相关产品推荐

