记录一下当时部署遇到的坑。
通常部署springboot项目都是打包成jar包或者war包两种方式。
服务器操做系统:windows
一、jar包
需要在pom.xml中修改打包方式
1
2
3 1<packaging>jar</packaging>
2
3
然后打开Maven点击package即可生成jar包。(前提idea已配置Maven)
把jar包放到服务器中,命令行指定到该jar的位置,执行一下命令即可。
该命令窗台关闭后,项目也会关闭。
1
2
3 1java -jar xxxx.jar
2
3
后台运行命令,窗口关闭也不会关闭项目,要关闭执行杀死该进程的命令即可。(记住启动时的PID)
1
2
3 1java -jar xxxx.jar > log.file 2>&1 &
2
3
二、war包
1、修改pom.xml
打包方式修改成war
1
2
3 1<packaging>war</packaging>
2
3
添加以下引用
1
2
3
4
5
6
7
8
9
10
11
12
13
14 1 <!--若使用外部tomcat加入该引用-->
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-tomcat</artifactId>
5 <scope>provided</scope>
6 </dependency>
7 <!--若使用到servlet加入该引用-->
8<dependency>
9 <groupId>javax.servlet</groupId>
10 <artifactId>javax.servlet-api</artifactId>
11 <scope>provided</scope>
12 </dependency>
13
14
2、修改SpringBoot启动类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 1import org.mybatis.spring.annotation.MapperScan;
2import org.springframework.boot.SpringApplication;
3import org.springframework.boot.autoconfigure.SpringBootApplication;
4import org.springframework.boot.builder.SpringApplicationBuilder;
5import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
6
7@SpringBootApplication
8@MapperScan(value = "com.Test.mapper")
9public class PackinglistApplication extends SpringBootServletInitializer{// 若使用外部tomcat加上该代码
10
11 /**
12 * 若使用外部tomcat加上该代码
13 */
14 @Override
15 protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
16 return application.sources(PackinglistApplication.class);
17 }
18
19 public static void main(String[] args) {
20 SpringApplication.run(PackinglistApplication.class, args);
21 }
22
23}
24
25
执行maven clean 和 maven package命令
生成war包后,可以在项目上的target文件夹中找到,自己可以重命名,最后放到自己tomcat服务器中的webapp下运行即可。
当时在服务器tomcat中部署报以下错误:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 1Caused by: java.lang.UnsupportedClassVersionError: org/springframework/web/SpringServletContainerInitializer : Unsupported major.minor version 52.0 (unable to load class [org.springframework.web.SpringServletContainerInitializer])
2 at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2404)
3 at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:859)
4 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
5 at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1185)
6 at java.lang.Class.forName0(Native Method)
7 at java.lang.Class.forName(Unknown Source)
8 at org.apache.catalina.startup.WebappServiceLoader.loadServices(WebappServiceLoader.java:188)
9 at org.apache.catalina.startup.WebappServiceLoader.load(WebappServiceLoader.java:159)
10 at org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1622)
11 at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1129)
12 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:769)
13 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:299)
14 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:94)
15 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5134)
16 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
17 ... 10 more
18
19
Unsupported major.minor version 52.0
原因是springboot与jdk版本不匹配,我在本地环境是springboot是2.0,jdk1.8运行是没有问题的,但服务器上的jdk是1.7的,所以报该错误。