注: この Java 配備ガイドでは、Java SE 6 update 10 リリースより前にリリースされた機能について説明します。最新情報については、Java Rich Internet Application の開発および配備を参照してください。
java.lang.ClassFormatError
がスローされるスロー元: ClassLoader
Sun Java™ Runtime Environment (JRE™) を使ってブラウザ内でアプレットを実行すると、ClassLoader
によって java.lang.ClassFormatError
がスローされます。同じアプレットが Microsoft Virtual Machine (VM) では実行できます。
このエラーは、古い JDK 1.0.2 か 1.1 コンパイラ、またはサードパーティーのオブファスケータによって生成されたバイトコードが原因で発生します。これまで、該当するコンパイラやオブファスケータによって多くのバイトコードが生成されていますが、いずれも Sun JRE 仕様に準拠していません。最近の Java SE リリースのべリファイアは不正なクラスフォーマットに関して非常に厳しくなっているため、こうした不正なクラスファイルがロードされたら VM によって java.lang.ClassFormatError
がスローされます。
古いクラスファイルに関する典型的な問題点は次のとおりです (ただしすべてを網羅したものではない)。
不正なクラスファイルを持ついくつかのアプレットを Java プラットフォームで実行できるようにするために、Java Plug-in には、不正なクラスファイルを正しいものに変換するバイトコード変換プログラムが含まれています。現時点では、次の問題を持つ不正なクラスファイルだけが変換されます。
しかし、バイトコード変換プログラムでは、次の問題を変換できません。そのため、引き続き ClassFormatError
が発生します。
これらの問題は、JDK にある javac
コンパイラを使用して Java クラスを再コンパイルするだけで解決します。サードパーティーのオブファスケータを使用する場合は、それが正しいクラスファイル形式に準拠したクラスファイルを作成するかどうかを確認してください。
なし。