java.lang.InternalError: имя слишком длинное для представления - PullRequest
20 голосов
/ 21 ноября 2011

Я получаю эту ошибку:

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 ]

10 голосов
/ 30 ноября 2011

обновление Ошибка, упомянутая в исходном ответе ниже, теперь закрыта!


Как указано в статье, на которую вы ссылаетесь, это ошибка в реализации Sun / Oracle JVM.На момент написания статьи это не решено.

Я могу придумать три способа решения этой проблемы:

  1. Не создавать файлы SMAP вообще (например, don 't запускать с -Xdebug или использовать параметры, подобные suppressSmap)
  2. Попробуйте убедиться, что размер отладочной информации невелик (например: уменьшите размер вашего кода)
  3. Используйте другойреализация виртуальной машины.
2 голосов
/ 15 апреля 2014

Одна из работ, которая сработала для меня, - добавление следующей записи в tomcat/conf/web.xml:

<init-param> 
   <param-name>suppressSmap</param-name> 
   <param-value>true</param-value> 
</init-param>
1 голос
/ 30 ноября 2011

Если вы можете определить класс, вызывающий проблему, вы сможете использовать Stripper , чтобы удалить информацию о расширении отладки из этого одного класса и все еще иметь возможность отладки остальных.

0 голосов
/ 28 ноября 2017

Я столкнулся с точно такой же ошибкой. Эта ошибка будет сообщаться только при запуске Tomcat в режиме отладки и для определенного файла JSP (большой размер). Когда я запускаю Tomcat в обычном режиме (не используя отладку), ошибка очищается. Эта ошибка начала появляться недавно, после того, как размер файла JSP со временем увеличился.

Единственный способ устранить эту ошибку - обновить Tomcat с версии 5.5 до версии 7.0, а JRE - до jdk1.7.

См. Снимок ниже, чтобы помочь вам получить изображение.

enter image description here

Кроме того, не забудьте добавить необходимые библиотеки, необходимые для Tomcat 7 и новой JRE.

Изначально, обновление файла web.xml для включения следующего раздела решило бы проблему, но в последнее время он больше не работает:

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