0

使用 Java 1.5 编译器,当我尝试编译依赖于使用 Java 1.6 编译的类的 java 类时,我收到此错误:

in/javac Java15.java
Java15.java:5: cannot access Java16
bad class file: ./Java16.class
class file has wrong version 50.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
        String java16result = Java16.test();
                              ^
1 error

反向工作(使用 Java 1.6 编译器,我可以链接到 Java 1.5 类。)

有什么解决方法吗?

4

4 回答 4

4

“解决方法”就是不这样做——如果你想用 Java 1.5 编译某些东西,那么也用 Java 1.5 编译它的所有依赖项。

于 2012-06-15T18:44:14.363 回答
3

我认为您尝试做的事情是不可能的。Java 1.6 具有 Java 1.5 不知道的特性,因此不知道如何执行它们。

于 2012-06-15T18:43:24.300 回答
0

使用 java 1.6 编译器和运行时。

您还可以反编译 1.6 代码并使用 1.5 编译器重新编译它。

我相信 1.5 和 1.6 的类文件之间只有一点点区别。您可能可以将 .class 文件开头的魔术字节更改为 1.5 并让它工作。虽然不能保证,但我不会这样做。

于 2012-06-15T18:46:39.873 回答
0

对我有用的解决方案是使用java.lang.Runtime.exec从 Java 1.5 程序执行 Java 1.6 程序。

我意识到在大多数情况下这可能不是最好的解决方案,但在我的情况下(我需要使用 Java 1.5 从 Oracle 数据库调用 Java 1.6 程序),它运行良好,并且不需要对我当前的数据库安装。

于 2012-07-11T21:36:24.027 回答