所以,哥们,又出现问题咯.没事,我也出现了,哈哈哈哈哈,csdn感觉太麻烦了,所以搞了一篇这个. 没得事,往下看,包解决的.
希望可以帮助到各位,感谢阅览!
小手点个赞,作者会乐烂哈哈哈哈哈哈😆😆😆😆
问题描述
启动 jar 包的时候报错no main manifest attribute“异常
这条错误信息表明在尝试运行java_gobang-0.0.1-SNAPSHOT.jar
时遇到了问题,没有找到主清单属性。在Java中,当试图运行一个JAR文件时,它需要包含一些必要的主清单属性,尤其是Main-Class
属性,该属性指定了JAR文件的主类。
主清单属性的用途
Main-Class
: 指定JAR文件的主类,即程序的入口点。- 其他常用属性还包括
Class-Path
(指定类路径)、Manifest-Version
(指定清单版本)等。
解决方法
1. 生成包含主类的清单文件:
-
现在一般使用Maven或Gradle构建项目,可以在构建配置中添加清单文件的配置。
-
对于Maven,1.要在
pom.xml
文件中添加如下配置:(要配置这个插件) -
1<build> 2 <plugins> 3 <plugin> 4 <groupId>org.apache.maven.plugins</groupId> 5 <artifactId>maven-jar-plugin</artifactId> 6 <version>3.2.0</version> 7 <configuration> 8 <archive> 9 <manifest> 10 <mainClass>com.example.MainClass</mainClass> 11 </manifest> 12 </archive> 13 </configuration> 14 </plugin> 15 </plugins> 16</build>
这里,
<mainClass>
标签应替换为应用程序的主类全限定名。类似如下:
(注意: 这里的skip 要设置为 false 我当时问题就出在这)
<skip>true</skip>
标签。这会导致Maven构建过程中跳过spring-boot-maven-plugin
的默认生命周期,这意味着不会自动创建包含Main-Class
属性的可执行JAR文件。所有要么移除,要么设false
-
对于Gradle,可以在
build.gradle
文件中添加如下配置:1jar { 2 manifest { 3 attributes 'Main-Class': 'com.example.MainClass' 4 } 5}
同样地,
com.example.MainClass
应替换为你的主类全限定名。
2. 检查JAR文件的清单文件:
- 使用文本编辑器打开
java_gobang-0.0.1-SNAPSHOT.jar
文件中的META-INF/MANIFEST.MF
文件,检查是否有Main-Class
属性。 - 如果找不到该文件或属性缺失,就创建或修改这文件。
手动添加清单文件:创建的MANIFEST.MF
文件内容应该像这样:
如果不使用构建工具,可以手动创建一个MANIFEST.MF
文件,并将其放置在META-INF
目录下。
1Main-Class: com.example.MainClass
2Manifest-Version: 1.0