为什么 MANIFEST.MF 和 class 文件中的 JDK 版本不同
Why the JDK Version in MANIFEST.MF and class file is different
我用 Jenkins(版本 2.164.1 和 JDK 1.8)构建了我的项目(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
class文件JDK版本是1.7
我的项目需要 运行 和 JDK1.7,这有问题吗?
添加 Eugene 的评论:
Build-Jdk
告诉您用于编译的 JDK 的确切版本(在您的例子中,这是 1.8.0_131)。 JDK 可以构建具有各种兼容级别的代码。这些级别在 maven-compiler-plugin 中配置。因此,您构建了一个 Java 1.7 与 Java 1.8 兼容的代码,这可能正是您想要的。
您可能会问 Build-Jdk
版本的用途:它可以帮助您追踪可能由 JDK 中的错误或其他不兼容性引起的问题。
我用 Jenkins(版本 2.164.1 和 JDK 1.8)构建了我的项目(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
class文件JDK版本是1.7
我的项目需要 运行 和 JDK1.7,这有问题吗?
添加 Eugene 的评论:
Build-Jdk
告诉您用于编译的 JDK 的确切版本(在您的例子中,这是 1.8.0_131)。 JDK 可以构建具有各种兼容级别的代码。这些级别在 maven-compiler-plugin 中配置。因此,您构建了一个 Java 1.7 与 Java 1.8 兼容的代码,这可能正是您想要的。
您可能会问 Build-Jdk
版本的用途:它可以帮助您追踪可能由 JDK 中的错误或其他不兼容性引起的问题。