2011-11-21 13 views
20

ottengo questo errore:java.lang.InternalError: nome è troppo lungo per rappresentare

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) 

che sembra legata alla alcune funzionalità di debug (in realtà la rimozione -Xdebug opzione riga di comando l'errore scompare). Ho anche trovato alcune informazioni in ASF Bugzilla. C'è un modo per risolvere questo?

Possibili soluzioni che posso pensare sono di cambiare la JVM (usando JRockit che non dovrebbe avere questo problema), ma non so davvero se questo può risolvere il problema e se può rompere qualcos'altro.

+2

Se si tratta di un bug noto non possiamo risolvere esso sia. Il cambio di JVM funziona in generale, ovviamente è necessario testare un'altra JVM. – home

+2

Puoi leggere l'ultimo post: https://forums.oracle.com/forums/thread.jspa?threadID = 943287 –

+0

Sembra che il bug non abbia uno stato risolto nel tracker di Sun e abbia anche bassa priorità. Non penso che andrà meglio nelle JVM più recenti. Aperto dal 2005, sembra che a loro non importi nulla. –

risposta

10

aggiornamento Il bug menzionato nella risposta originale di seguito è stato chiuso!


Come osservato in un articolo che si fa riferimento, questo è un bug nell'attuazione Sun/Oracle JVM. Al momento della scrittura, non è stato risolto.

Mi vengono in mente tre modi per aggirare il problema:

  1. Non generare file SMAP a tutti (ad esempio: non correre con -Xdebug o utilizzare le impostazioni suppressSmap-like)
  2. Cerca di assicurarti che le dimensioni delle informazioni di debug siano ridotte (es: riduci le dimensioni del tuo codice)
  3. Usa un'implementazione diversa della macchina virtuale.
+0

Grazie per la tua risposta, solo due punti: stai confermando che il bug è presente nella versione 5 e 6 di Sun JVM? (Si noti che Oracle JRockit VM non dovrebbe presentare questo problema). Puoi approfondire un po 'su "suppressSmap-like"? – Paolo

+0

+1, accetterò questa risposta, se verranno forniti i dettagli che ho richiesto. – Paolo

+0

Non ho riprodotto personalmente i bug su Sun/Oracle 5 e 6, ma la segnalazione dei bug a cui mi sono collegato rimane irrisolta. Questo, combinato con i commenti in corso nel rapporto, è una buona indicazione che il bug è ancora presente. Per quanto riguarda le impostazioni di SuppressSmap: alcune implementazioni aggirano questo bug fornendo impostazioni personalizzate per impedire la creazione di dati di debug. Si veda, ad esempio, la sezione "Problemi noti" su http://tomcat.apache.org/tomcat-6.0-doc/jasper-howto.html – Guus

1

Se è possibile determinare la classe che sta causando il problema si dovrebbe essere in grado di utilizzare Stripper per rimuovere le informazioni di estensione di debug da quella classe ed essere ancora in grado di eseguire il debug il resto.

2

Un lavoro intorno che ha lavorato per me è l'aggiunta la seguente voce nella tomcat/conf/web.xml:

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

ho affrontato esattamente lo stesso errore. Questo errore verrà segnalato solo quando avvierò Tomcat in modalità di debug e per alcuni file JSP (di grandi dimensioni). Quando avvio Tomcat in modalità normale (non utilizzando Debug), l'errore viene cancellato. Questo errore ha iniziato a essere visualizzato di recente, dopo che il file JSP è aumentato di dimensioni nel tempo.

L'unico modo in cui sono riuscito a risolvere questo errore è l'aggiornamento di Tomcat dalla versione 5.5 alla versione 7.0 e JRE su jdk1.7.

Vedere l'istantanea di seguito per aiutare a ottenere l'immagine.

enter image description here

Inoltre, non dimenticate di aggiungere le librerie necessarie richieste per Tomcat 7 e il nuovo JRE.

Inizialmente, l'aggiornamento del file web.xml per includere la sezione seguente avrebbe risolto il problema, ma recentemente non funziona più:

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