Tomcat 7 – Servlet 3.0: etiqueta de bytes no válida en el grupo constante

  • Tomcat 7.0.16
  • Java 1.6.0_22
  • CentOS 5.6

Acabo de cambiar el web.xml a servlet 3.0 (desde una aplicación que ejecutaba 2.4 anteriormente) y ahora veo el siguiente error (activado el registro fino para org.apache.tomcat.util):

mtyson FINE: Scanning JAR [file:/usr/java/jdk1.6.0_22/jre/lib/ext/jcharset.jar] from classpath mtyson Jul 19, 2011 10:04:40 AM org.apache.catalina.startup.HostConfig deployDirectory mtyson SEVERE: Error deploying web application directory ROOT mtyson org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 60 

ACTUALIZACIÓN: Just Tomé tomcat 7.0.19 – los mismos resultados

Puede que no sea su problema, pero el mío era el mismo que este , una versión anterior de com.ibm.icu:icu4j. Resolví el problema cambiando la configuración de comstackción para excluir las dependencias transitivas más antiguas y explícitamente según la última versión (4.8).

Añadiendo

 metadata-complete="true" 

a su web.xml debería ordenar el problema

  

Esto le dice a tomcat que no debe analizar las anotaciones de las clases: http://www.tomcatexpert.com/blog/2011/10/12/how-use-fragments-and-annotations-configure-your-web-application

Gracias James A Wilson por su respuesta : actualizar icu4j como sugirió funcionó para mí y me permite mantener la versión = “3.0” en mi web.xml (que prefiero a largo plazo).

icu4j 2.6.1 era la versión que no funcionaba, la actualización a NEXT versión 3.4.4 resolverá este problema. NO fui a la última versión de icu4j (49.1) porque es 4MB más grande que la versión 3.4.4.

Aquí hay un fragmento de configuración de Maven para bloquear su versión de dependencia transitiva (sin agregar una dependencia explícita):

    com.ibm.icu icu4j 3.4.4    

Me encontré con el mismo problema hoy. En mi caso, la dependencia venía a través de com.google.code.findbugs: annotations: jar: 1.3.8. Eso significa que esta biblioteca solo se usa en el momento de la comstackción, para usar anotaciones y desactivar algunas advertencias de Findbug. En este caso, en lugar de cambiar la versión, es seguro simplemente cambiar el ámbito de dependencia y no tomar la biblioteca en tiempo de ejecución:

    com.ibm.icu icu4j provided  .... 

Creo que este es un error al analizar el archivo web.xml

Usar esto funciona para mí …

  

COOKIE

Observe el uso de la versión = “2.5” con el esquema web-app_3_0.xsd y la presencia del modo de seguimiento session-config que es solo parte de la especificación 3.0 no la 2.5 (AFAIK)

Esto resultó ser un jasper jar incompatible incluido en la comstackción, en conflicto con jasper.jar en tomcat 7.

Estaba enfrentando el mismo problema de una semana y lo resolví simplemente reemplazando el archivo icu4j.2.1.jar con la última versión de jar.

agregando http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd “metadata-complete =” true “>

resuelto mi problema

En la versión 2.6.1. el com.ibm.icu.impl.data.LocaleElements_zh__PINYIN.class no es válido. La única solución es actualizar, otras soluciones son solo soluciones temporales.

Se puede verificar ejecutando la siguiente prueba en su proyecto (siempre que icu-xxxjar esté en su classpath):

@Test public void testValidityOfLocaleElements_zh__PINYINJar() throws ClassNotFoundException { getClass().forName("com.ibm.icu.impl.data.LocaleElements_zh__PINYIN"); }