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 实现中的一个错误。在撰写本文时,尚未解决。

我可以想到三种方法来解决这个问题:

  1. 根本不生成 SMAP 文件(例如:不要使用 -Xdebug 运行或使用类似 suppressSmap 的设置)
  2. 尽量确保调试信息的大小很小(例如:减少代码的大小)
  3. 使用不同的虚拟机实现。
于 2011-11-30T16:02:35.287 回答
2

一项对我有用的解决方法是在 中添加以下条目tomcat/conf/web.xml

<init-param> 
   <param-name>suppressSmap</param-name> 
   <param-value>true</param-value> 
</init-param>
于 2014-04-15T08:29:35.513 回答
1

如果您可以确定导致问题的类,您应该能够使用Stripper从该类中删除调试扩展信息,并且仍然能够调试其余部分。

于 2011-11-30T16:02:24.320 回答
0

我遇到了完全相同的错误。只有当我在调试模式下启动Tomcat时,并且对于某些JSP文件(大尺寸),才会报告此错误。当我以正常模式(不使用调试)启动 Tomcat 时,错误就会被清除。在 JSP 文件的大小随时间增加之后,最近开始出现此错误。

我能够解决此错误的唯一方法是将 Tomcat 从 5.5 版升级到 7.0 版,将 JRE 升级到 jdk1.7。

请参阅下面的快照以帮助您获取图片。

在此处输入图像描述

另外,不要忘记添加 Tomcat 7 和新 JRE 所需的库。

最初,更新文件web.xml以包含以下部分可以解决问题,但最近它不再工作:

    <init-param>
            <param-name>mappedfile</param-name>
            <param-value>false</param-value>
    </init-param>
于 2017-11-28T18:57:14.290 回答
-1

指向 Jdk7 并将 Java 堆大小增加到 1024 解决了这个问题。

更新 setDomainEnv.cmd 以反映以下值。

JAVA 内存参数: -Xms128m -Xmx3072m -XX:CompileThreshold=8000 -XX:PermSize=1024m -XX:MaxPermSize=1024m 。WLS 启动模式=开发。CLASSPATH=C:\Oracle\MIDDLE~1\patch_wls1035\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\Oracle\MIDDLE~1\patch_oepe1050\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\Oracle\MIDDLE ~1\patch_ocp360\profiles\default\sys_manifest_classpath\weblogic_patch.jar;C:\PROGRA~1\Java\JDK17~1.0_4\lib\tools.jar;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\ lib\weblogic_sp.jar;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\weblogic.jar;C:\Oracle\MIDDLE~1\modules\features\weblogic.server.modules_10.3.5.0。 jar;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\webservices.jar;C:\Oracle\MIDDLE~1\modules\ORGAPA~1.1/lib/ant-all.jar;C:\Oracle \MIDDLE~1\modules\NETSFA~1.0_1/lib/ant-contrib.jar;C:\Oracle\MIDDLE~1\WLSERV~1。3\common\derby\lib\derbyclient.jar;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\lib\xqrl.jar 。PATH=C:\Oracle\MIDDLE~1\patch_wls1035\profiles\default\native;C:\Oracle\MIDDLE~1\patch_oepe1050\profiles\default\native;C:\Oracle\MIDDLE~1\patch_ocp360\profiles\default \native;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\32;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\bin;C:\Oracle\MIDDLE~1\模块\ORGAPA~1.1\bin;C:\PROGRA~1\Java\JDK17~1.0_4\jre\bin;C:\PROGRA~1\Java\JDK17~1.0_4\bin;C:\Program Files (x86) \Common Files\Oracle\Java\javapath;C:\ProgramData\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell \v1.0\;C:\Program Files\Cloud Foundry;C:\Program Files\PuTTY\;C:\Program Files\TortoiseGit\bin;C:\Program Files\MySQL\MySQL Utilities 1.6\;C:\程序文件\Git\cmd;D:\nodejs\;C:

于 2020-01-30T05:59:17.673 回答