java -jar 显示没有主清单
时间: 2025-01-10 20:57:45 浏览: 107
### 解决 `java -jar` 报错无主类清单属性的方法
当尝试通过 `java -jar` 运行 JAR 文件时遇到错误提示 "no main manifest attribute" 或者 "no main-class manifest attribute missing" 表明该JAR文件缺少必要的清单(manifest)配置来指明哪个类含有入口方法 `public static void main(String[] args)`。
#### 方法一:手动添加 Main-Class 属性到 MANIFEST.MF 文件中
如果项目不是基于构建工具管理,则可以手工编辑位于 META-INF/MANIFEST.MF 的清单文件,加入如下内容:
```plaintext
Main-Class: com.example.MainClass
```
这里假设 `com.example.MainClass` 是包含 `main()` 函数的那个类全限定名[^1]。
#### 方法二:使用 Maven 构建并设置插件自动处理 Manifest
对于采用Maven作为依赖管理和构建系统的Java应用程序来说,可以通过调整pom.xml中的maven-jar-plugin配置来自动生成带有正确Manifest信息的可执行Jar包。具体做法是在项目的 pom.xml 中增加或修改 maven-jar-plugin 插件的相关配置项:
```xml
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.2.0</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.example.MainClass</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
```
这段XML片段会告诉Maven在打包过程中自动生成MANIFEST.MF,并且将指定的主类写入其中[^2]。
#### 方法三:利用 Spring Boot 打包特性
如果是Spring Boot应用的话,默认情况下创建的应用程序已经包含了合适的POM/Gradle脚本模板用于生成可独立运行(JAR/WAR)形式的服务端点。只需要确保启动类上有@SpringBootApplication注解即可;而具体的打包操作可通过IDE内置功能或是命令行完成,比如mvn clean package之后产生的目标目录下的jar/war可以直接用java -jar 来启动[^3]。
阅读全文
相关推荐


















