使用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类。)
是否有任何解决方法?
答案 0 :(得分:4)
“解决方法”根本就是不这样做 - 如果你想用Java 1.5编译一些东西,也要用Java 1.5编译它的所有依赖项。
答案 1 :(得分:3)
我不认为你想做的事情是可能的。 Java 1.6具有Java 1.5不了解的功能,因此不知道如何执行它们。
答案 2 :(得分:0)
使用java 1.6编译器和运行时。
您也可以反编译1.6代码并使用1.5编译器重新编译它。
我相信1.5和1.6类文件之间只有一个小的区别。您可以将.class文件开头的魔术字节更改为1.5并使其工作。虽然我不能保证,但我不会这样做。
答案 3 :(得分:0)
对我有用的解决方案是使用java.lang.Runtime.exec
从Java 1.5程序执行Java 1.6程序。
我意识到这可能不是大多数情况下的最佳解决方案,但在我的情况下(我需要使用Java 1.5从Oracle数据库调用Java 1.6程序),它工作正常,并且不需要任何更改到我目前的数据库安装。