运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..
1、最近开发了一个导出excel文件的项目,开发完成了,在本地运行可以,当将dea中生成jar包运行却发现了一系列问题,现在我们就来聊聊如何处理吧。
一、问题复现
1、第一步操作,将导出jar包的环境配置一下。
2、开始生产可执行的jar包,点击Build->xx.jar->Build or Rebuild,导出jar包
二、运行问题
1、当到jar包所在目录执行java -jar xxxx.jar 时候,报错
(1)报jar中没有主清单属性
(2)这是由打成的jar中META-INF/MANIFEST.MF不含有Main-Class信息导致的,网上解决方式有很多种,修改pom.xml等等,都没有解决我的问题,因为我的项目很简单,pom.xml都是idea自动生成的,应该没有问题,只可能是配置jar包环境导致的,最后果然是这儿。
(3)终极解决方案:指定META-INF/MANIFEST.MF的路径为src***意不要放到main/java目录下),如下:
2、再次到jar包所在目录执行java -jar xxxx.jar报错
(1)nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
(2)这个说不能启动web应用上下文由于错误的web工厂实体,看网上很多解决方法,有的给pom.xml加tomcat依赖,有的给启动类加@EnableAutoConfiguration 注解,还有的加bean,这样启动了,但是我在yml文件中配置端口被改为8080了,也无法打开页面,都不合适,bean如下:
@Bean
ServletWebServerFactory servletWebServerFactory(){
return new TomcatServletWebServerFactory(9300);
}
(3)终极解决方案:
到项目根目录下,执行下面语句,到target目录下获取xxxx.jar运行,这样就和ide中运行效果一样了。
mvn package -Dmaven.test.skip=true
三、效果及总结
1、效果图
2、总结
这样有关我碰到的一系列jar运行问题就解决了,有的小伙伴可能是其他的各种原因吧,希望可以帮到大家,如果顺利解决了小伙伴的问题,可以点个赞,关注一下,又或者关注java基础笔记公号。
上一篇: 东南大学课表查询系统