java - 在 java 6 中加载/运行在 java 7 中编译的类

标签 java class jvm

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

谢谢

最佳答案

I want the client jars to work (compile/run) in my java 6 any way i can achieve this?

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

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

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

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

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

<小时/>

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

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

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

关于java - 在 java 6 中加载/运行在 java 7 中编译的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653552/

相关文章:

java - spring 在链接中使用安全 :authentication principal. 用户名

java - 使用 JPA 存储/读取日期时出现时区相关问题

java - 如何使用 spring boot 和 jpa 在数据库中上传和保存文件?

java - 在Java中使用instanceof运算符

C#-调用覆盖版本的方法的基本版本

java - 如何向相邻jvm中的akka​​系统发送消息?

java - 为什么 JVM tableswitch/lookupswitch 指令的格式有 0 到 3 个字节的填充?

java - ccrypt不会解密ccrypt-j加密的文件

java - Jvm6 如何在不需要时减少堆大小

java - 如何从一个类调用另一个类的构造函数?