IDEA导出springboot war包进tomcat服务器出现的问题
按照网上的参考资料导出war包在放进服务器总是出现问题。
1.pom文件
因为springboot自带内置一个tomcat,但是我们放进服务器后不需要使用它自带的服务器,所以我们第一步是把他屏蔽掉。
<-----------pom文件------------->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<!-- 移除嵌入式tomcat插件,方便项目打包放进服务器-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--只在测试和编译时使用,在平时调试时使用-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
2.在启动类同级目录下加一个自定义类,重要
/**
* springboot项目一般都有一个启动类来启动项目,而部署到tomcat不能通过该方式启动,所以需要改变启动方式
* Created by Chenge on 2020.1.07 8:57
*/
public class ServletInitializer extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
// 注意这里要指向用main方法执行的Application启动类
return builder.sources(UsedwebApplication.class);
}
}
/-----------------------------------------分割线-------------------------------------------------
错误的步骤是现在就开始打war包放进服务器,我之前就是这样,看一下我的错吧
查看tomcat的日志文件
错误提示没有找到驱动类,但我解压出war包后发现驱动包是在的。不见的是我们静态资源包,做一下比较
开始排错
查看resources 是不是resource类型文件夹
我这里是正确的,不是的话右键 make directory as resource
查看pom文件是否将resource包含进去
重要,重要,重要 没写这一步的话是无法将静态资源打进war包的
3.开始打包
打好的war包
将war包放进tomcat的webapps下面
此时可以根据ip:端口/war包名称 进行访问了。
因为一般tomcat只需要部署一个项目,所以我们可以进行相关设置将war包名称去掉。
编辑 tomcat/conf/server.xml
找到Host标签,加上以下一段代码
<Context path="" docBase="war包名称(不要.war)" debug="0">
</Context>
这样设置后服务器启动时会进行以下操作
1.解压war包
2.创建ROOT目录(一般默认有个tomcat的主页项目,会覆盖掉)
3.将解压的war包内容复制进ROOT
4.启动服务器
-----linux注册tomcat服务不在此处说明
service tomcat start
成功进入主页
如果你的问题得到解决,记得给我点赞关注加评论哦!!!