没有主清单属性
2018-11-07 本文已影响0人
杜子龙
今天遇到一个问题,java程序在idea中可以正常运行,但是一打包通过java -jar的方式就会运行报错,
image.png
查阅了半天网上资料,发现是jar包中的META-INF/MANIFEST.MF文件缺少默认运行的Main类,然后就是手动加上运行的类(Main-Class属性),
image.png
这里需要严格按照这个格式来写,也就是Main-Class:后面有空格,包名+类名,类名后不加.class,最后要换行。
一般情况,按照上诉操作之后,是可以通过jar包正常运行,但是由于jar中引用了3方jar包,导致出现另外的错误。
一般情况,按照上诉操作之后,是可以通过jar包正常运行,但是由于jar中引用了3方jar包,导致出现另外的错误。
出现这个错误的原因其实很简单,就是没有把3方jar包一并打入待运行jar包,解决方案如下:
在刚才的META-INF/MANIFEST.MF文件中再添加一行配置,Class-Path: lib/fastjson-1.2.28.jar,多个3方jar包之间用空格,这里格式严格同上。最后在待运行jar包的同级目录下新建lib文件夹,用来存放需要的3方jar包。
最后这并不是一个一劳永逸的办法,太麻烦了。可以直接在pom文件中添加一个SpringBoot构建的插件,重新打包编译即可。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>