2014-05-06 11 views
24

Ho provato l'aggiornamento a Java 8. Quando avvii il nostro server tomcat7, con un file .war Java-compilato, ottengo il misterioso errore di seguito.org.apache.tomcat.util.bcel.classfile.ClassFormatException: tag byte non valido in pool costante: 15 - incompatibilità Tomcat 7, JDK?

Devo aspettarmi che funzioni? Questo post dice che tomcat 7 dovrebbe funzionare con 1.6 e versioni successive. Non posso dire se Tomcat è la colpa, o il .war. Commutazione out versioni di Java differenti ottengo:

  • JDK 7,45 installati - Lavori (stessa versione utilizzata per la compilazione .war)
  • JDK 7.55 installato - non riesce, come di seguito
  • JDK 8.05 installato - non riesce, come di seguito

Tomcat è la colpa, o il .war?

Caused by: org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 15 
     at org.apache.tomcat.util.bcel.classfile.Constant.readConstant(Constant.java:131) 
     at org.apache.tomcat.util.bcel.classfile.ConstantPool.<init>(ConstantPool.java:60) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.readConstantPool(ClassParser.java:209) 
     at org.apache.tomcat.util.bcel.classfile.ClassParser.parse(ClassParser.java:119) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsStream(ContextConfig.java:2032) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1923) 
     at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1891) 
     at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1877) 
     at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) 
     at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:855) 
     at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:345) 
     at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) 
     at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 
     at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5161) 
     at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 

risposta

30

che stavo vedendo questo errore con Tomcat 7.0.26.

Per rispondere alla tua domanda, Tomcat è la colpa: https://issues.apache.org/bugzilla/show_bug.cgi?id=53735

l'aggiornamento alla versione 7.0.53 fissato per me (in base al numero collegato, la correzione dovrebbe essere in 7.0.30 e versioni successive).

0

Ho anche affrontato questo problema. Ho seguito l'errore e ho scoperto che avevo bisogno di aggiornare all'ultima versione la nostra dipendenza da Maven per il vaso ICU4J.

e l'errore è andato ora:

<dependency> 
    <groupId>com.ibm.icu</groupId> 
    <artifactId>icu4j</artifactId> 
    <version>56.1</version> 
    </dependency> 
0

ho avuto Java 8 sul mio computer, ma volevo corsa mia Tomcat utilizzando Java 7.

La seguente soluzione ha funzionato per me.

In %CATALINA_HOME%\bin\ (ad esempio: C: \ Tomcat \ bin) aggiungere setenv.bat avente la seguente tenore:

@echo off 
set JAVA_HOME=C:\Program Files\Java\jdk1.7.0_03 
set JRE_HOME=%JAVA_HOME%\jre 
exit /B 0 

Quando si esegue startup.bat, le seguenti chiamate avvengono:

startup.bat 
    | 
    └── catalina.bat 
       | 
       └── setenv.bat 
  • vedi:

    if not exist "%CATALINA_BASE%\bin\setenv.bat" goto checkSetenvHome 
    call "%CATALINA_BASE%\bin\setenv.bat" 
    
Problemi correlati