idea springboot项目打jar包部署成功,却无法访问
1.情景展示
如上图所示,使用idea打包成功后,使用java命令启动jar包,并没有报错信息,但是通过浏览器或者postman却无法访问项目相关请求。
2.原因分析
与项目无关,是idea自身的mvn插件自身的bug,使用插件的package命令进行打包时,打成jar包的话,可能会造成部署在java时项目无法正常访问。
提醒:
如果你的是问题是:项目部署成功,其它正常,html页面也可以正常访问,就是无法访问jsp页面,我只能告诉你,不用再往下看了!
因为:springboot项目,打jar包会将webapp目录下所有的文件排除在外。
但是,resources/template目录下可以放置静态资源(html/js/css/img等);
那我们将webapp目录下的东西迁移到template目录下呢?
只要是放在templates下的文件都能被打包进去;
但即使是这样,我们也无法访问jsp,只能通过配置模板访问html,无法访问jsp。
3.解决方案
回归原始状态,使用mvn原生命令,自己手动打包,正所谓:自己动手丰衣足食。
首先,一般人想到的笨方法就是,使用cmd命令打开黑窗口,开始敲命令,其实,在idea中就可以执行cmd命令
远在天边近在眼前,它就在这里:
点击这种窗口,我们就可以像在cmd中那样为所欲为,这样,我们就可以直接输入打包命令,省略切换到将要打包的目录下这一道命令啦
最简单的打包命令:
mvn clean package
如果想在打包的时候跳过测试环节,就可以这样:
mvn clean package -Dmaven.test.skip=true
这里强调一点:有人会把mvn install当成是打包命令,虽然,这个命令也可以生成我们所需的包,但是,其实严格意义上来说,
mvn install是把项目打成jar包并安装到本地仓库;
mvn package才是纯粹的打包命令。
一般情况下,到这里就结果了
但有人明明需要的是jar包,结果出来确实war包,尴不尴尬?
首先,看你的项目有没有指定打包形式,一般而言,如果没有配置该标签的话,默认打出来的将是jar包,如果标签值不是jar,就改成jar;
还有一种情况就是:pom.xml通过profile标签来配置多个环境,比如:开发环境、测试环境、生成环境等
想要哪个环境生效,就需要激活对应的环境,不然生成的将不会是你所需要的。
还有一种方式更方便:
开发环境打包:mvn clean package -Dmaven.test.skip=true -P dev
测试环境打包:mvn clean package -Dmaven.test.skip=true -P test
生产环境打包:mvn clean package -Dmaven.test.skip=true -P prod
通过命令-p来指定哪个环境生效
拓展:
如何运行jar包(部署项目)?
首先,将要部署的电脑需要安装jdk或者jre,并且能够通过命令执行相关java命令;
其次,执行javac命令
java -jar jar包的绝对路径或相对路径
回车,等待即可
另外,生成的日志文件将会伴随jar包所在目录
2021-01-06
springboot多模块项目,通过idea打的jar包,项目可以正常访问,这还真是挺奇怪的哈。
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/13841945.html