Discuss / Java / original-hello.jar中没有主清单属性解决方式

original-hello.jar中没有主清单属性解决方式

Topic source

风语酱

#1 Created at ... [Delete] [Delete and Lock User]

original-hello.jar中没有主清单属性,

主清单属性是jar包中MANIFEST.MF文件中的属性,这里主要造成问题的原因是jar包中的该文件缺少Main-Class: xxxx这一行信息

文件位置在我们打的jar包下META-INF文件夹下

可以尝试在(IDEA)File - project structure - project settings - artifacts中add一个JAR(From modules with dependencies),配置对应的Main-class后,在src/main/目录下会生成META-INF文件夹和MANIFEST.MF文件,重新mvn clean package后可以对比发现jar包里的MANIFEST.MF比该文件少了Main-Class: xxx这一属性,在jar里的该文件添加这一行信息后就可以正常执行了(当然如果报版本错误那就是自己的JDK版本比老师的版本低的原因了,可以自己建立一个maven项目试试手)。

出错原因分析:当我们将打包插件依赖删除后会发现项目照样可以打包,由此可见我们出错是因为使用了原始maven打包,并没有使用我们添加的打包插件打包。

没有使用打包插件时在项目中打开MANIFEST.MF文件会发现有Main-Class属性,当打开jar包会发现里面的MANIFEST.MF并没有此属性。

使用打包插件后发现MANIFEST.MF有此属性,且多了xxx.jar.original的文件而且jar包结构也不一样。


  • 1

Reply