20

次のエラーが表示されます。

java.lang.InternalError: name is too long to represent
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at weblogic.utils.classloaders.GenericClassLoader.defineClass(GenericClassLoader.java:338)
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:291)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:259)

-Xdebugこれは、いくつかのデバッグ機能に関連しているようです (実際、コマンド ライン オプションを削除すると、エラーが消えます)。ASF Bugzillaにもいくつかの情報が見つかりました。これを解決する方法はありますか?

私が考えることができる可能な解決策は、JVMを変更することです(この問題は発生しないはずのJRockitを使用します)が、これが問題を解決できるかどうか、他の何かを壊すことができるかどうかはわかりません。

4

5 に答える 5

10

更新以下の元の回答に記載されているバグは現在クローズされています!


参照した記事に記載されているように、これはSun/Oracle JVM 実装のバグです。執筆時点では未解決です。

この問題を回避するには、次の 3 つの方法が考えられます。

  1. SMAP ファイルをまったく生成しません (例: -Xdebug を指定して実行したり、suppressSmap のような設定を使用したりしないでください)。
  2. デバッグ情報のサイズが小さいことを確認してください (例: コードのサイズを小さくする)。
  3. 別の仮想マシン実装を使用してください。
于 2011-11-30T16:02:35.287 に答える
1

問題の原因となっているクラスを特定できる場合は、Stripperを使用してその 1 つのクラスからデバッグ拡張情報を削除しても、残りをデバッグできるはずです。

于 2011-11-30T16:02:24.320 に答える