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

「回避策」は単にそれを行わないことです。Java1.5で何かをコンパイルしたい場合は、そのすべての依存関係もJava1.5でコンパイルしてください。

于 2012-06-15T18:44:14.363 に答える
3

あなたがやろうとしていることは可能ではないと思います。Java 1.6には、Java 1.5が認識していない機能があるため、それらの実行方法がわかりません。

于 2012-06-15T18:43:24.300 に答える
0

java1.6コンパイラとランタイムを使用します。

1.6コードを逆コンパイルし、1.5コンパイラで再コンパイルすることもできます。

1.5クラスファイルと1.6クラスファイルの違いはわずか1つだけだと思います。おそらく、.classファイルの先頭にあるマジックバイトを1.5に変更して、機能させることができます。ただし、保証はありません。私はこれを行いません。

于 2012-06-15T18:46:39.873 に答える
0

私のために働いた解決策は、java.lang.Runtime.execJava1.5プログラムからJava1.6プログラムを実行するために使用することでした。

ほとんどの場合、これはおそらく最善の解決策ではないことを理解していますが、私の場合(Java1.5を使用してOracleデータベースからJava1.6プログラムを呼び出す必要があった場合)、正常に機能し、現在のソリューションに変更を加える必要はありませんでした。データベースのインストール。

于 2012-07-11T21:36:24.027 に答える