springboot项目打war包以及降低jdk版本问题

项目开始是用java8的环境开发的Springboot项目,部署时才知道现场安装的是jdk1.7,且需要将项目打成war包放在tomcat7.0下运行。最近部署遇到了一些问题,这里将解决方案记录一下:

一、Springboot项目如何打war包
1、更改pom文件中的打包方式
在dependencies标签同级位置增加

<packaging>warpackaging>

2、去掉springboot默认的内置tomcat

<dependency>
	<groupId>org.springframework.bootgroupId>
	<artifactId>spring-boot-starter-webartifactId>
	<exclusions>
		<exclusion>
			<groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
        exclusion>
    exclusions>
dependency>

3、在项目启动类所在目录增加外置启动类, 默认的启动类要继承SpringBootServletInitiailzer类,并复写configure()方法。

package com.ieslab.powertrace;

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;

/**
 * @description:
 * @author: yiwenli
 * @create: 2021-11-18 14:53
 **/
public class SpringBootStartApplication extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
        // 注意这里要指向原先用main方法执行的Application启动类
        return builder.sources(XXXApplication.class);
    }
}

二、Springboot项目如何降低jdk版本
1、修改IDEA中配置的软件开发工具包
打开项目结构,修改Modules下的Module SDK为1.7
springboot项目打war包以及降低jdk版本问题_第1张图片

2、修改IDEA中配置的java编译使用版本
打开设置,修改Java Compiler中对应Module的Target bytecode version
springboot项目打war包以及降低jdk版本问题_第2张图片
3、如果代码中使用java8的新特性,比如函数式编程,那需要将代码中用到的java8语法改成8以下版本可用的语法。
4、修改pom文件中的java版本、tomcat版本

<properties>
	<java.version>1.7java.version>
    <tomcat.version>7.0.73tomcat.version>
properties>

5、修改maven-compiler-plugin插件配置!!!
这一步要注意。
这个插件是用来告诉代码用什么版本的jdk编译的,如果不注意会很容易出现版本不匹配的问题,导致编译不通过。

<plugin>
	<groupId>org.apache.maven.pluginsgroupId>
    <artifactId>maven-compiler-pluginartifactId>
    <configuration>
    	<source>7source>
        <target>7target>
    configuration>
plugin>

6、降低springboot版本

<parent>
	<groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>1.5.10.RELEASEversion>
    <relativePath/>
parent>

7、降低springboot版本后 可能有些类的引用发生了改变 这里需要改一下 重新import。
8、上述步骤完成后,启动项目应该可以启动成功,这时需要再测试一下功能是否均可正常使用。

可能遇到的错误
java.lang.UnsupportedClassVersionError:Unsupported major.minor version 52.0
此错误为不支持类版本错误,可能是因为不同的JDK版本编译出的class文件可能会有差异 高版本 JDK能够兼容低版本JDK自然没问题,反之就会出现问题。
java主要版本分配的数字如下:

9 = 53
8 = 52
7 = 51
6.0 = 50

所以可能是项目中引用了其他用java8版本编译的jar包。这里就根据日志找该jar就行。

11:14:57.427 [http-bio-8080-exec-6] ERROR org.springframework.boot.web.support.ErrorPageFilter - Forwarding to error page from request [/xx/xx] due to exception [org/apache/commons/lang3/StringUtils : Unsupported major.minor version 52.0 (unable to load class org.apache.commons.lang3.StringUtils)]
java.lang.UnsupportedClassVersionError: org/apache/commons/lang3/StringUtils : Unsupported major.minor version 52.0 (unable to load class org.apache.commons.lang3.StringUtils)

你可能感兴趣的:(JAVA,坑,spring,boot,java,tomcat)