Paolo
Paolo

Reputation: 2472

java.lang.InternalError: name is too long to represent

I get this error:

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)

Which seems related to some debug functionality (in fact removing -Xdebug command line option the error disappears). I've also found some information in ASF Bugzilla. Is there a way to solve this?

Possible solutions I can think of are to change the JVM (using JRockit which should't have this issue), but I do not really know if this can solve the issue and if it can break something else.

Upvotes: 20

Views: 10688

Answers (5)

Ravikumar Ganesan
Ravikumar Ganesan

Reputation: 1

Pointing to Jdk7 and increasing Java heap size to 1024 solved the issue.

update setDomainEnv.cmd to reflect following values.

JAVA Memory arguments: -Xms128m -Xmx3072m -XX:CompileThreshold=8000 -XX:PermSize=1024m -XX:MaxPermSize=1024m . WLS Start Mode=Development . 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\modules\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:\Program Files\Git\cmd;D:\nodejs\;C:\Program Files (x86)\Webex\Webex\Applications;C:\WINDOWS\System32\OpenSSH\;C :\Users\181443\AppData\Roaming\npm;C:\Users\181443\AppData\Local\Microsoft\WindowsApps;C:\Users\181443\AppData\Local\Programs\Microsoft VS Code\bin;;C:\Oracle\MIDDLE~1\WLSERV~1.3\server\native\win\32\oci920_8 .

Upvotes: -1

tarekahf
tarekahf

Reputation: 1002

I faced exactly the same error. This error will be reported only when I start Tomcat in debug mode, and for certain JSP file (large size). When I start Tomcat in normal mode (not using Debug) then the error is cleared. This error started to show recently, after the JSP file increased in size over time.

The only way I was able to resolve this error is to upgrade Tomcat from version 5.5 to version 7.0, and JRE to jdk1.7.

See the snapshot below to help you get the picture.

enter image description here

Also, don't forget to add the needed libraries required for Tomcat 7 and the new JRE.

Initially, updating the file web.xml to include the following section would solve the problem, but recently it is no longer working:

    <init-param>
            <param-name>mappedfile</param-name>
            <param-value>false</param-value>
    </init-param>

Upvotes: 0

Guus
Guus

Reputation: 3006

update The bug mentioned in the original answer below has now been closed!


As noted in the article that you reference, this is a bug in the Sun/Oracle JVM implementation. At the time of writing, it is unresolved.

I can think of three ways to work around the issue:

  1. Don't generate SMAP files at all (eg: don't run with -Xdebug or use suppressSmap-like settings)
  2. Try to make sure that the size of the debug information is small (eg: reduce the size of your code)
  3. Use a different virtual machine implementation.

Upvotes: 10

sumit dugar
sumit dugar

Reputation: 121

One work around that worked for me is adding the following entry in the tomcat/conf/web.xml:

<init-param> 
   <param-name>suppressSmap</param-name> 
   <param-value>true</param-value> 
</init-param>

Upvotes: 2

Jon Strayer
Jon Strayer

Reputation: 2098

If you can determine the class that is causing the problem you should be able to use Stripper to remove the debug extension information from that one class and still be able to debug the rest.

Upvotes: 1

Related Questions