如何降级没有项目的jar文件版本?

问题描述 投票:0回答:4

我的库中有一个旧的 jar 文件,它使用 jdk 1.7.0_03。但是在我的新电脑上我没有适用的jdk版本。我当前的版本是1.6。是否可以在没有项目源文件的情况下降级 jar 文件的版本(1.7 -> 1.6),以便我的 jar 文件可以在 java 1.6 上运行?

java jar downgrade
4个回答
1
投票

您可以尝试使用“jar”CLI工具解压jar文件并更改Manifest文件中的版本。 然后你需要再次重新打包该文件。 这曾经对我使用 OSGi Bundle 有用过。


1
投票

您不可能降级 .jar 文件,因为它包含已编译的代码。如果该代码使用 1.7 功能,您就会陷入困境。不过你可以尝试在 1.6 上运行它。如果你运气好的话,它会起作用。


1
投票

Java 类文件格式是有版本的,类文件版本号在 1.6 和 1.7 之间变化。 无论 JAR 清单如何,Java 6 JVM 根本无法加载 Java 7 或更高版本格式的类文件。

使用

jar
命令替换清单(按照评论者的建议)不会有帮助。

您真正需要的是一个字节码反向移植工具。 虽然此类工具显然存在,但没有一个(据我所知)可以将 Java 7 字节码转换为 Java 6 或更早版本。


注意:以上内容可以推广到所有 Java 版本:

  • 您无法使用早期版本的 Java 的 JVM 来运行为特定 target Java 版本编译的类文件。
  • JAR Manifest 中的版本信息不会影响此。

最后,在旧的 生命周期结束 Java 平台上运行 Java 代码是有风险的。 Java 平台可能存在未修补的重大安全漏洞。


0
投票

是否可以降级jar文件的版本

不。你需要重新编译JAR

没有项目源文件

您需要源文件来重新编译。你可以反编译类文件,但这并不那么容易

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