java.lang.InternalError:name太长而无法表示

Pao*_*olo 20 java weblogic java-5

我收到此错误:

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)
Run Code Online (Sandbox Code Playgroud)

这似乎与某些调试功能有关(实际上删除-Xdebug命令行选项,错误消失).我也在ASF Bugzilla中找到了一些信息.有办法解决这个问题吗?

我能想到的可能的解决方案是更改JVM(使用JRockit应该没有这个问题),但我真的不知道这是否可以解决问题以及是否可以破坏其他问题.

Guu*_*uus 10

更新下面原始答案中提到的错误现已关闭!


如您所引用的文章中所述,这是Sun/Oracle JVM实现中的错误.在撰写本文时,尚未解决.

我可以想出解决这个问题的三种方法:

  1. 根本不生成SMAP文件(例如:不要使用-Xdebug运行或使用类似suppressSmap的设置)
  2. 尝试确保调试信息的大小很小(例如:减小代码的大小)
  3. 使用其他虚拟机实现.