一个springboot的项目或者说是一个demo好不容易写完,在项目上可以运行跑出来,但是放在tomcat上就访问不到,下面就来说一说,这到底是为什么!!!
首先,说思路:
- 改启动类,springboot发布到tomcat需要改动它的main启动类
- 在pom.xml 把springboot的打包类型改成 war类型
- 因为springboot有内置tomcat,所以你在打包项目的时候你得屏蔽自己得tomcat
- 在springboot配置文件和pom.xml里面,声明在tomcat里面访问路径(这里看不懂了往下看)
第一步:改springboot启动类
先来看一下原本的启动类:
@SpringBootApplication
public class DrawingBedApplication {
public static void main(String[] args){
SpringApplication.run(DrawingBedApplication.class, args);
}
}
在来看我们要改动的:
@SpringBootApplication
public class DrawingBedApplication extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder springApplicationBuilder) {
return springApplicationBuilder.sources(DrawingBedApplication.class);
}
public static void main(String[] args){
SpringApplication.run(DrawingBedApplication.class, args);
}
}
在增加一个依赖
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
第二步:原本是打包成jar包,现在我们改成war包发布
<groupId>com.hfq</groupId>
<artifactId>drawing_bed</artifactId>
<version>0.0.1-SNAPSHOT</version>
<!-- 打包成 WAR -->
<packaging>war</packaging>
第三步:屏蔽springboot自带的tomcat
<!-- 排除内置tomcat容器,导出成war包可以让外部容器运行spring-boot项目-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
第四步:更改我们的项目在tomcat上访问的路径
重点来了,我们的问题就是,项目明明在tomcat成功发布了(关于这点我们可以在tomcat文件夹里面的log文件夹里面可以看得到我们整个项目发布的日志),但是却访问不到,原因就是路径不对
由于springboot默认打包会给你加后缀如:
好,来解决
第一步:把springboot给你的默认打包名给换了
<build>
<!--这里你们就写,你们要访问的项目路径XXXX-->
<finalName>drawing_bed</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
第二步:既然你项目打包的 包名都改了,那你tomcat访问的项目名字是不是也得改?所以我们在配置文件里面配置一下,我们tomcat里面的项目访问路径,我这边使用的是yal
server:
servlet:
context-path: /drawing_bed
好,开始打包:
打包成功:
可以看到我们此时项目的war包名字已经改过来了
然后,把war包放到自己的tomcat文件夹里面的webapp里面
原本我们的打包是这样放入文件夹访问不到
现在我们改了名字,改了路径,放入
好,在我们的apache-tomcat-8.0.33文件夹里面的bin文件夹下的,shutdown.bat文件先关闭tomcat,然后在startup.bat启动tomcat,如果 闪退的话就是有可能是你JAVA_HOME没有配置,或者是CATALIAN_HOME没有配置
这个时候如果傻逼tomcat还是找不到JAVA_HOME 那就只能来硬的了,直接改它配置文件
怎么改,来看
分析startup.bat启动脚本:发现其调用了catalina.bat,而catalina.bat调用了setclasspath.bat
来开始改动:
set JAVA_HOME=D:\JAVA\JDK
这里直接手动配置tomcat JAVA_HOME
项目部署成功!