You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用Spring Boot Maven插件时,修改Java编译版本为1.7失败如何解决?

嘿,我来帮你搞定这个问题!你遇到的情况其实挺常见的——只配置了source为1.7,可Maven还是用1.5编译,这是因为光设source不够,咱们得把编译插件的参数配全,同时还要确保spring-boot-maven-plugin能正确把依赖打进最终Jar包。下面一步步来:

1. 修正Java编译版本配置

Maven的maven-compiler-plugin在旧版本里,默认会把生成字节码的target版本设为1.5,哪怕你指定了source是1.7。所以必须显式同时配置sourcetarget,才能确保编译出来的代码是Java 1.7兼容的。把这段配置加到你的pom.xml里:

<build>
    <sourceDirectory>src</sourceDirectory>
    <pluginManagement>
        <plugins>
            <!-- 配置编译插件,锁定Java 1.7版本 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version> <!-- 选一个兼容Java 1.7的插件版本 -->
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding> <!-- 顺手加上编码配置,避免乱码问题 -->
                </configuration>
            </plugin>
            <!-- 这里放你原有的其他插件配置 -->
        </plugins>
    </pluginManagement>
</build>
2. 配置spring-boot-maven-plugin打包依赖

要把所有依赖Jar打进最终生成的Jar包(也就是常说的fat jar),spring-boot-maven-plugin的repackage目标正好能帮你完成这个工作。只需确保插件绑定到Maven的package阶段,配置如下:

<build>
    <!-- 保留上面的sourceDirectory和编译插件配置 -->
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.1.18.RELEASE</version> <!-- 注意:Spring Boot 2.1.x是支持Java 1.7的最后一个大版本 -->
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
3. 验证配置是否生效
  • 验证编译版本:运行mvn compile -X,在日志里找类似这样的内容,如果能看到-source 1.7-target 1.7,就说明编译版本配置正确了:
    [DEBUG] Command line options: -d /你的项目路径/target/classes -classpath ... -source 1.7 -target 1.7 -encoding UTF-8
    
  • 验证依赖打包:运行mvn package,在target目录下找到生成的Jar包,用命令jar tf target/你的Jar名称.jar查看,里面应该包含你项目的类和所有依赖的类文件。

内容的提问来源于stack exchange,提问作者Manish Rajput

火山引擎 最新活动