java - 为什么MANIFEST.MF和类文件中的JDK版本不同

标签 java maven jenkins java-8 java-7

我使用 Jenkins(使用 JDK 1.8 的版本 2.164.1)构建了我的项目(JDK 版本 1.7)

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

然后我得到了一个jar文件, 当我解压 jar 文件并 vim MANIFEST.MF

Build-Jdk:1.8.0_131

然后我跑

javap -verbose MyClass.class | grep "major"
major version: 51

类文件JDK版本为1.7

我的项目需要运行JDK1.7,这有什么问题吗?

最佳答案

添加尤金的评论:

Build-Jdk 告诉您用于编译的 JDK 的确切版本(在您的情况下,这是 1.8.0_131)。该JDK可以构建具有各种兼容性级别的代码。这些级别在 maven-compiler-plugin 中配置。因此,您构建了一个与 Java 1.8 兼容的 Java 1.7 代码,这可能正是您想要的。

您可能会问 Build-Jdk 版本的用途是什么:它可以帮助您追踪可能来自 JDK 中的错误或其他不兼容性的问题。

关于java - 为什么MANIFEST.MF和类文件中的JDK版本不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55491718/

相关文章:

java - 如何在使用 RestTemplate 时禁用或路由调试日志

java - 使用 RestTemplate 设置安全 cookie

java - MapStruct 无法识别 @Mapping 中的字段 - 简单配置

java - 如何将数据与身份验证数据一起存储在 Firebase 中

java - 解析 JSONObjects 和 JSONArrays 的最佳方式

java - Hudson 部署项目 .war 以外的 Artifact 时出现问题

java - ANTLR4 运行时 JAR

github - Jenkins Github oAuth 404回调错误

groovy - 如何用Groovy PostBuild标记Jenkins构建不稳定

jenkins - 从 SCM 运行声明性 JenkinsFile 时,"java.lang.NoSuchMethodError: No such DSL method ' 管道 ' found"