欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..

程序员文章站 2022-07-09 17:17:01
...

1、最近开发了一个导出excel文件的项目,开发完成了,在本地运行可以,当将dea中生成jar包运行却发现了一系列问题,现在我们就来聊聊如何处理吧。

一、问题复现

1、第一步操作,将导出jar包的环境配置一下。

运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..

2、开始生产可执行的jar包,点击Build->xx.jar->Build or Rebuild,导出jar包

运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..

二、运行问题

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目录下),如下:

运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..

 

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、效果图

运行jar包问题-jar中没有主清单属性- Unable to start ServletWebServerApplicationContext due to missing ServletWeb..

2、总结

这样有关我碰到的一系列jar运行问题就解决了,有的小伙伴可能是其他的各种原因吧,希望可以帮到大家,如果顺利解决了小伙伴的问题,可以点个赞,关注一下,又或者关注java基础笔记公号。

相关标签: 日常总结