运行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基础笔记公号。

猜你喜欢

转载自blog.csdn.net/jiankang66/article/details/104587960