【问题标题】:How can I use a library compiled for Java 7 in Java 6?如何在 Java 6 中使用为 Java 7 编译的库?
【发布时间】:2013-07-04 09:36:45
【问题描述】:

我正在开发一个 Java 应用程序,我需要使用一个名为 myBeans.jar 的 jar。

这个myBeans.jar 包含许多类文件,这些文件是用jdk 1.7 编译的。我没有这些类文件的源代码。

我的整个应用程序都在使用 jdk 1.6。我无法将它的编译器更改为 jdk 1.7。 所以我希望我的 jar 与我的应用程序兼容。这就是为什么我希望使用 jdk 1.6 编译 jar 的类。

现在我的问题是:有没有办法使用 jdk 1.6 编译类文件(而不是 java 文件)?

也欢迎任何替代建议。

有人建议我使用反编译器从类文件中获取源代码,然后使用 jdk 1.6 编译源代码。但我最后更喜欢这个解决方案,因为有很多类文件。

【问题讨论】:

  • 您是否检查过是否有使用 java 6 编译的 MyBeans.jar 的旧版本?如果它是一个下载的库,他们可能有一个存档。
  • @DanielLerps 是的,我已经检查过了,但我找不到旧的 jar。
  • .class 文件已编译。你编译 .java 文件,而不是 .class 文件。
  • 原标题很糟糕,描述了一个可能的解决方案,而不是手头的问题。希望我的编辑可以更容易地了解这个问题是关于什么的。

标签: java compilation java-7 java-6


【解决方案1】:

这可能行不通。 Java 7 引入了早期版本中不存在的语言功能,因此如果库中使用了这些功能中的任何一个,您可能无法使用 JDK 6 重新编译。

此外,每个 Java 版本都会引入新的方法和类,因此如果在库中使用了任何 @since 1.7 项,它们将不会出现在您的 Java 6 环境中并且构建将失败。

【讨论】:

  • 任何在线工具或插件什么的..?
  • @RAS 除了你的熟人建议的手动反编译/重新编译之外,我不知道可以采取什么方法。
  • 我希望我的 jar 与我的应用程序兼容。应用程序是使用 jdk 1.7 编译的,而 jar 是使用 jdk 1.6 编译的。我无法将应用编译更改为 jdk 1.7。
猜你喜欢
  • 2013-01-20
  • 2011-12-01
  • 2012-08-25
  • 2021-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-26
  • 1970-01-01
相关资源
最近更新 更多