运行带依赖的可执行Jar时遭遇main类ClassNotFoundException求助
解决Jar包无法找到主类的问题
嘿,我一眼就发现问题所在了!你的MANIFEST.MF文件里Main-Class行的末尾多了个分号;,这直接导致JVM找不到主类——它会把com.foo.baitshop.Design;当作完整的类名去查找,可实际你的类名是com.foo.baitshop.Design,多出来的分号让它变成了一个不存在的类路径。
解决步骤:
修正Maven插件配置
如果你用的是maven-shade-plugin或者maven-jar-plugin,检查配置里的mainClass参数,确保末尾没有多余的分号。比如maven-shade-plugin的正确配置示例:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.4.1</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.foo.baitshop.Design</mainClass> </transformer> </transformers> </configuration> </execution> </executions> </plugin>重新打包Jar
在项目根目录执行Maven命令,重新生成正确的Jar包:mvn clean package再次运行Jar包
回到Jar所在目录,执行运行命令:java -jar baitshop2-1.0-SNAPSHOT-jar-with-dependencies.jar
如果临时想快速验证,也可以手动解压Jar包,修改META-INF/MANIFEST.MF里的Main-Class行,去掉末尾的分号后重新打包,但更推荐修改Maven配置,这样后续打包都不会再出现这个问题。
内容的提问来源于stack exchange,提问作者L. Blanc
相关产品推荐
相关产品推荐

