java 1.4 コンパイラが 1.5 コンパイラでコンパイルされたサードパーティのライブラリについて文句を言わないのはなぜですか? この問題は、実行時に UnsupportedClassVersionError で発生します。
1 に答える
0
Java 1.5以降、クラスファイル形式がわずかに変更されました(たとえば、注釈を保持するため)。コンパイラドキュメント-target
のオプションを参照してください。Java 1.5以降のJVMは、両方のクラスファイル形式をサポートしています。Java 1.4 VMは(当然のことながら)以前の形式のみをサポートします。
コンパイラが文句を言わない理由について:コンパイラは、コンパイルを求められたファイルを正しくコンパイルするのに十分な情報があるかどうかだけを気にする必要があります。それらを正しく実行できるかどうかではありません。JVMは、クラスを正しく実行することを心配する必要があります。どうやら、1.4コンパイラがコンパイル中のコード内から1.5クラスを喜んで参照しているのを見ている場合、フォーマットの変更は、コンパイラが1.4スタイルのコードをコンパイルするために必要な情報に影響を与えませんでした。その動作を保証するリファレンスをすぐに見つけることはできませんが、それがあなたが見ているものであれば...
于 2010-05-07T15:05:21.823 に答える