予期されるクラスにキャストするときに ClassCastException が発生する
複数の Java プロジェクトを操作する場合、オブジェクトを予期されるクラスにキャストするときに ClassCastException が発生する場合があります。クラスタイプを確認しているにもかかわらず。これは通常、クラスロード メカニズムの違いが原因で発生します。
あなたの場合、dynamicbeans.DynamicBean2 クラスとdynamic.Validator クラスのバージョンが異なる 2 つの別個のプロジェクトがあります。これらのクラスを Form プロジェクトに動的にロードし、そのインスタンスを作成します。ただし、Form プロジェクトのライフサイクル中に、セッションから取得したオブジェクトを予期した DynamicBean2 クラスにキャストしようとすると、ClassCastException が発生します。
この例外は、セッションから取得したオブジェクトがロードされたために発生します。 Form プロジェクトに DynamicBean2 クラスをロードしたクラスローダーとは異なるクラスローダーによって行われます。クラスの名前は同じですが、実際には JVM では異なる Class オブジェクトです。
この問題を解決するには、セッションから取得したオブジェクトが、ロードされたのと同じクラスローダーによってロードされていることを確認する必要があります。 Form プロジェクトの DynamicBean2 クラス。考えられる解決策はいくつかあります。
アプリケーションのコンテキストに応じて、この問題に対処する他の方法が考えられる場合があります。詳細および考えられる解決策については、WebSphere のクラスローディングに関する提供された記事を参照してください。
以上がJava でさまざまな ClassLoader によってロードされたオブジェクトをキャストすると ClassCastException が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。