java -jar报错没有主清单属性
时间: 2025-05-17 07:05:51 浏览: 68
### Java运行时缺少主清单属性的解决方案
在使用`java -jar`命令执行JAR文件时,如果遇到“No main manifest attribute”错误,则表示JAR文件中的MANIFEST.MF文件未正确定义`Main-Class`属性。以下是解决问题的具体方法:
#### 1. 修改Maven项目的pom.xml配置
为了确保生成的JAR文件包含正确的`Main-Class`属性,可以在Maven项目的`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>
<!-- 定义主类 -->
<mainClass>com.test.Main</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
</plugins>
</build>
```
上述配置会告诉Maven,在构建过程中自动生成带有`Main-Class`属性的MANIFEST.MF文件[^1]。
#### 2. 手动编辑MANIFEST.MF文件
如果不希望通过修改`pom.xml`实现自动化处理,也可以手动编辑JAR包内的`META-INF/MANIFEST.MF`文件。打开此文件并添加如下内容:
```
Manifest-Version: 1.0
Main-Class: com.test.Main
```
保存后重新打包JAR文件即可正常运行[^2]。
#### 3. 使用IntelliJ IDEA内置工具
对于使用IntelliJ IDEA开发环境的情况,可以通过其内置功能快速完成配置:
- 转至菜单栏 `File -> Project Structure...`
- 在弹出窗口左侧选择 `Artifacts`
- 添加一个新的Artifact类型为`Jar`,并将`Main Class`字段设为`com.test.Main`
- 应用更改后点击右上角绿色三角按钮或者直接调用`Build Artifacts`选项进行编译操作
完成后得到的新版JAR文件已具备所需的`Main-Class`信息。
#### 示例代码片段验证
下面是一个简单的测试程序用于确认修复效果:
```java
// 文件位置 src/main/java/com/test/Main.java
package com.test;
public class Main {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
```
按照前述任一方式调整好项目设定之后再次尝试执行命令:`java -jar your-generated-file.jar`,应该能够看到预期输出:"Hello world!".
---
阅读全文
相关推荐


















