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

问题描述 投票:1回答:1

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

    <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文件并调用MANIFEST.MF时

Build-Jdk:1.8.0_131

然后我跑了

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

类文件JDK版本是1.7

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

java maven jenkins java-8 java-7
1个回答
2
投票

添加Eugene的评论:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.