1

我的项目是在 1.4.2 JDK 中构建的。现在它将与第三方 jar 交互,内置 JDK 1.6

我在使用客户端类时遇到了兼容性问题。是否可以在不将我的 JDK 升级到 1.6 或在 1.4.2 中重建第三方 jar 的情况下解决它

4

1 回答 1

1

您不能在以前的 JDK 1.4 上运行使用 JDK 1.6 编译的类,因为您会遇到java.lang.UnsupportedClassVersionError异常。这是因为 Java 不向前兼容,它只是向后兼容(参见规范)。

为了验证它,我安装了 JDK 1.4.2.19 和 JDK 1.6.0.23 并编写了一个示例应用程序:

公共类 HelloWorld {
    公共静态无效主要(字符串[]参数){
            System.out.println("你好世界!");
    }
}

使用 JDK 1.6.0.23 构建它:

 ../1.6.0.23/bin/javac HelloWorld.java

并使用 JDK 1.4.2.19 运行它:

../1.4.2.19/bin/java HelloWorld

输出:

线程“main”java.lang 中的异常。UnsupportedClassVersionError:HelloWorld
(不支持的major.minor 50.0版)
      在 java.lang.ClassLoader.defineClass0(本机方法)
      在 java.lang.ClassLoader.defineClass(ClassLoader.java:539)
        ...


解决方案:如果第三方应用程序不调用 1.6(和 1.5)中引入的方法,您可以尝试使用 JDK 1.4 重建您的第三方应用程序。

于 2011-01-21T16:30:15.243 回答