【问题标题】:Loading/Running classes compiled in java 7 in java 6 [duplicate]在java 6中加载/运行在java 7中编译的类[重复]
【发布时间】:2013-07-15 11:47:46
【问题描述】:

我在我的组件中使用了一些客户端 jar,客户端 jar 使用 java 7 编译和运行。由于一些管理决策,我无法迁移到 java 7。我希望客户端 jar 能够工作(编译/运行)在我的 java 6 中有什么方法可以实现这个吗?

谢谢

【问题讨论】:

  • 你可以访问这些类的源代码吗?
  • 不,我无权访问这些源代码,它们以 jar 形式发送给我..
  • This question 可能会有所帮助。
  • @selig 仍然需要重新编译。
  • 管理层决定你不应该使用 Java 7。我会通知他们他们已经决定你不会使用这个库。顺便说一句,Java 6 已终止免费服务,Java 8 将在不到一年的时间内推出。

标签: java class jvm


【解决方案1】:

我希望客户端 jar 在我的 java 6 中工作(编译/运行),我可以通过什么方式实现这一点?

如果您有源代码,可以尝试在 Java 6 构建平台上编译代码。但是,不能保证它会按原样编译和运行:

  • 代码可能使用 Java 7 语言结构。

  • 代码可能使用 Java 7 特定的类或方法。

坏消息是没有神奇的方法来处理由上述引起的任何编译错误。您需要手动将 Java 7-isms 翻译成 Java 6 兼容的源代码。

但好消息是,如果代码确实在 Java 6 JDK 上编译,那么它很有可能在 Java 6 JRE 上运行。


如果您无权访问该源代码,那么问题就会变得非常困难

理论上可以将字节码转换为早期版本,但执行此操作的工具往往有很大的局限性。以下是一些可能的线索:

请注意,我还没有找到将 Java 7 转换为 Java 6 的“复古”工具。(要么没有人完成这项工作,要么 Java 7 的某些东西使问题变得难以解决。)

【讨论】:

    猜你喜欢
    • 2012-08-25
    • 1970-01-01
    • 1970-01-01
    • 2011-12-01
    • 1970-01-01
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多