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