この Java Plug-in リリースに関連した新規 Java Runtime Environment が、以前のコンパイラで生成されたクラスファイルを実行できないことがあります。この場合、この種のクラスファイルをロードしようとすると、仮想マシンが java.lang.ClassFormatError をスローするという現象がよく見られます。この障害は、このリリースの変更とは特に関係がありません。 原因は、以前のバイトコードコンパイラがクラスファイルを生成する際、ある状況下で適切なクラスファイル形式に厳密には準拠しないことです。最近の仮想マシン実装では、適切なクラスファイル形式が厳密に適用されるため、不適切な形式の以前のクラスファイルをロードしようとすると、エラーが発生することがあります。以前のクラスファイルでよく発生する問題の一部を、次に示します (この一覧にすべてが網羅されているわけではありません)。
クラスファイルの末尾に余分なバイトが存在する
クラスファイルに、文字以外で始まるメソッド名またはフィールド名が含まれる
クラスが、別のクラスの private メンバにアクセスしようとする
クラスファイルで、不正な定数プールインデックスおよび不正な UTF-8 文字列など、ほかの形式エラーが発生する
初期の (サードパーティ製) バイトコードオブファスケータには、適切なクラスファイル形式に違反するクラスファイルを生成するものがある
この種の問題は、最新の Java 2 SDK に付属の Javac バイトコードコンパイラでクラスを再コンパイルすることで回避できます。サードパーティ製のオブファスケータを使用する場合は、適切なクラスファイル形式のクラスファイルを生成するものを使用してください。