我的项目是在 1.4.2 JDK 中构建的。现在它将与第三方 jar 交互,内置 JDK 1.6
我在使用客户端类时遇到了兼容性问题。是否可以在不将我的 JDK 升级到 1.6 或在 1.4.2 中重建第三方 jar 的情况下解决它
我的项目是在 1.4.2 JDK 中构建的。现在它将与第三方 jar 交互,内置 JDK 1.6
我在使用客户端类时遇到了兼容性问题。是否可以在不将我的 JDK 升级到 1.6 或在 1.4.2 中重建第三方 jar 的情况下解决它
您不能在以前的 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 重建您的第三方应用程序。