# 终端执行 java -jar example.jar 时(example.jar为项目jar包)报错:“没有主清单属性” 的解决方法

终端执行 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

1)如果你有原始的源代码和编译后的类文件,你可以使用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正确设置。

相关推荐
yyxx41212312 小时前
上海企业如何选择专业的钉钉服务商
java·大数据·人工智能·钉钉
一杯奶茶¥12 小时前
水果销售网站 CRM客户信息管理系统 超市管理系 酒店管理系统 健身房管理系统 在线音乐网站 校园招聘系统
java·vue.js·spring boot·mysql·spring·java项目
重生之后端学习12 小时前
Java入门
java·开发语言·职场和发展
碧海蓝天202212 小时前
C++法则24:在标准 C++ 中,没有任何可移植的方式判断指针 T* pt 指向的内存位置是否已经 构造了对象,程序员必须手动跟踪哪些元素已构造。
java·开发语言·c++
один but you13 小时前
const和constexpr常量表达式
java·前端·javascript
码云数智-大飞13 小时前
RAII 与智能指针深度拆解
java·前端·算法
云烟成雨TD13 小时前
Agent Scope Java 2.x 系列【19】Harness:从零搭建 MySQL 文件系统
java·人工智能·agent
qq36219670513 小时前
阿里裁员新消息(2026最新动态汇总)
java·开发语言·前端
a11177613 小时前
“黑夜流星“个人引导页 网页html
java·前端·html
砚底藏山河13 小时前
沪深A股:如何获取基金持股数据
java·python·数据分析·maven