网站首页 > java教程 正文
# 终端执行 java -jar example.jar 时(example.jar为项目jar包)报错:“没有主清单属性” 的解决方法
在Java中,一个JAR文件必须包含一个主清单属性(Main-Class属性)才能在命令行中直接运行。如果你在尝试运行example.jar时遇到了“没有主清单属性”的错误,这意味着JAR文件的META-INF/MANIFEST.MF文件中没有正确设置Main-Class属性。
## 一、问题描述
在终端(CMD)执行如 java -jar
dzs168-dashboard-generate.jar 时,
报错:“
dzs168-dashboard-generate.jar中没有主清单属性”,如下图:
## 二、解决方案
### 1、方法1:使用jar命令添加Main-Class
- 如果你有原始的源代码和编译后的类文件,你可以使用jar命令来创建一个包含Main-Class属性的新JAR文件。例如,如果你的主类是com.example.Main,你可以使用以下命令:
```bash
jar cfe dzs168-dashboard-generate.jar com.example.Main -C build/classes/ .
```
2)这里,cfe选项用于创建新的JAR文件并设置入口点(Main-Class),com.example.Main是你的主类名,build/classes/是包含编译后的.class文件的目录。
### 2、方法2:使用java -jar并指定Main-Class
1)如果你无法重新生成JAR文件,你可以在运行JAR时直接指定Main-Class 如下:
```bash
java -cp dzs168-dashboard-generate.jar dzs.it.dashboard.Main
```
2)这里,-cp参数指定了包含主类的JAR文件,而不需要JAR文件本身包含Main-Class属性。
dzs.it.dashboard.Main 是你的包含 main 方法的包名类名。
### 3、方法3:修改现有的MANIFEST.MF文件
1)如果你有权限修改现有的JAR文件,你可以使用以下步骤来添加或修改Main-Class属性:
2)在
dzs168-dashboard-generate.jar文件同级目录,创建一个新的文本文件,命名为MANIFEST.MF,并添加以下内容:
```bash
Manifest-Version: 1.0
Class-Path: .
Main-Class: dzs.it.dashboard.Main
```
3)注意:文件下面必须有一空行。dzs.it.dashboard.Main 为包含main方法的包名类名。
4)使用jar命令更新JAR文件:
```bash
jar ufm dzs168-dashboard-generate.jar MANIFEST.MF
```
5)这里,ufm选项用于更新JAR文件的元数据(Manifest)。
6)注意事项:
确保你指定的Main-Class名称完全正确,包括包名。如:dzs.it.dashboard.Main
7)JAR文件更新完成,重新执行 java -jar
dzs168-dashboard-generate.jar 命令即可。
```bash
java -jar dzs168-dashboard-generate.jar
```
### 4、如果你使用的是IDE(如Eclipse, IntelliJ IDEA等),通常IDE会在构建过程中自动处理这些设置。检查项目的构建配置确保Main-Class正确设置。
猜你喜欢
- 2025-06-15 Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 2025-06-15 推荐一款超棒的SpringCloud 脚手架项目
- 2025-06-15 IDEA将项目打包成jar包(idea打包普通java项目)
- 2025-06-15 Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 2025-06-15 记录Dockerfile将jar包构建成部署所需的镜像
- 2025-06-15 项目基础部署汇总八---linux下xxl-job安装
- 2025-06-15 Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 2025-06-15 如何将本地JAR文件添加到Maven项目中
- 2025-06-15 Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 2025-06-15 # 怎么让 java -jar example.jar 产生的日志输出到指定文件
你 发表评论:
欢迎- 06-15Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 06-15推荐一款超棒的SpringCloud 脚手架项目
- 06-15IDEA将项目打包成jar包(idea打包普通java项目)
- 06-15Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 06-15记录Dockerfile将jar包构建成部署所需的镜像
- 06-15项目基础部署汇总八---linux下xxl-job安装
- 06-15Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 06-15终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 最近发表
-
- Linux中如何通过Shell脚本来控制Spring Boot的Jar包启停服务?
- 推荐一款超棒的SpringCloud 脚手架项目
- IDEA将项目打包成jar包(idea打包普通java项目)
- Spring Boot3 项目 jar 包打包成 Docker 镜像全攻略
- 记录Dockerfile将jar包构建成部署所需的镜像
- 项目基础部署汇总八---linux下xxl-job安装
- Spring Boot Jar 包秒变 Docker 镜像实现多环境部署
- 终端执行 java -jar example.jar 时报错:“没有主清单属性” 的解决
- 如何将本地JAR文件添加到Maven项目中
- Java 类隔离应用:多 Jar 包支持(java接口隔离原则)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)