java.lang.IllegalArgumentException: archivo WAR no válido o ilegible: error al abrir el archivo zip
jsp tomcat (14)
Recibí este error en Catalina.2011-03-30.log cuando mi archivo display.war se ejecutó en Tomcat. El error se muestra a continuación:
Mar 30, 2011 8:01:31 PM org.apache.catalina.startup.ContextConfig init
SEVERE: Exception fixing docBase for context [/Display]
java.util.zip.ZipException: error in opening zip file
at java.util.zip.ZipFile.open(Native Method)
at java.util.zip.ZipFile.<init>(ZipFile.java:114)
at java.util.jar.JarFile.<init>(JarFile.java:135)
at java.util.jar.JarFile.<init>(JarFile.java:72)
at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:72)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:48)
at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:70)
at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:104)
at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:71)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:148)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:886)
at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:1021)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:279)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.StandardContext.init(StandardContext.java:5602)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4378)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:662)
Mar 30, 2011 8:01:31 PM org.apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
java.lang.IllegalArgumentException: Invalid or unreadable WAR file : error in opening zip file
at org.apache.naming.resources.WARDirContext.setDocBase(WARDirContext.java:135)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4249)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4418)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:546)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1345)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:303)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
at org.apache.catalina.core.ContainerBase.backgroundProcess(ContainerBase.java:1337)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1601)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.processChildren(ContainerBase.java:1610)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1590)
at java.lang.Thread.run(Thread.java:662)
Gracias por adelantado.
Enfrenté este problema, no agregué nada ni modifiqué nada en mi compilación. Pero creo que surgió mi problema porque estaba cargando directamente mi archivo war al tomcat7/webapps/
remoto de tomcat7/webapps/
.
Solución de su archivo de guerra al directorio intermedio como /home/yourusername
o algo, luego muévase a su directorio de webapps
. Probablemente para mí este problema surgió porque el archivo aún no se había cargado por completo y tomcat estaba tratando de extraerlo / implementarlo.
Espero que esto ayude a alguien.
me enfrento al mismo problema muchas veces y finalmente encontré la solución ... solución exacta de todos modos, estaba usando Tomcat 8.0.9 localmente para probar y cuando cargué el archivo war al servidor recibí el mensaje de error de descompresión de la guerra ... así que revisé el el servidor Tomcat y tenía 6, así que instalé esa versión y verifiqué la versión de Java en el servidor y la encontré 5, así que también me aseguro de usar la versión 5 en mi máquina local. el problema es cómo se empaqueta el archivo de guerra, por lo que si usa la misma versión y tomcat empaqueta de manera correcta que el servidor pueda entender ... otra solución ... actualice la versión del servidor para que coincida con la que usa localmente. Deberían ser iguales. Espero que esto solucione tu problema.
La causa se muestra claramente:
java.lang.IllegalArgumentException: Invalid or unreadable WAR file : error in opening zip file
Un archivo WAR
(Web ARchive) es un archivo zip que contiene sus clases, bibliotecas y recursos para su aplicación web.
Cambie el nombre de su archivo WAR de a.war
a a.zip
. Si no puede abrir el archivo zip con Winzip / 7-Zip / WinRar, vuelva a generar su archivo WAR.
Espero que esto ayude.
El mismo problema aqui. el archivo war se puede abrir con 7-zip.
Editar : descubrí por qué. "Archivo WAR inválido o ilegible: error al abrir el archivo zip" es definitivamente un mensaje de error confuso. La verdadera razón es simplemente "Tomcat no puede desplegar la guerra porque hay algunos errores de inicialización". En mi caso, a mi archivo War faltan algunos archivos de configuración que arrojan una excepción de archivo no encontrado. La versión diferente de Tomcat parece informar diferentes errores. En 6.0.26, informa correctamente el error. Pero en 6.0.32, informa el confuso "Archivo WAR inválido o ilegible".
Si está implementando en Linux, asegúrese de que el usuario pueda leer que el proceso de tomcat se está ejecutando como. Ejecute "chmod + r" en el archivo war para agregar derechos de lectura a todos.
El problema específico de Aby parece estar resuelto, pero en caso de que alguien más se tropiece con esta página con el mismo problema que tuve ...
Asegúrese de que su directorio / opt / solr tenga los permisos correctos establecidos. Estaba siguiendo el tutorial de SolrJetty antes de pasar a la instalación de Tomcat. Porque mi usuario Solr fue creado con este comando:
useradd -d /opt/solr -s /sbin/false solr
el directorio / opt / solr se creó con los permisos 700, por lo que tomcat no pudo acceder al archivo WAR. Cambia a 755 y funcionó perfectamente.
En mi caso, fue la corrupción de archivos durante la transferencia de archivos lo que causó este problema. Por lo tanto, siempre es una buena práctica validar la suma de comprobación del archivo cada vez que lo transfiramos a un servidor remoto.
Asegúrese de que su ruta al archivo WAR sea correcta. Tuve un error tipográfico y esto tiene el mismo error.
BalusC tiene razón. Me encontré con este error cuando ejecuté mi aplicación web en un cuadro de Linux que tenía la versión de openjdk de Java instalada en lugar de un JDK normal. Después de instalar un JDK normal y señalar la variable JRE_HOME de tomcat al JDK normal, el problema desapareció.
He encontrado el error al azar. Creo que la causa es bastante simple.
Puede suceder cuando crea el archivo WAR y lo transfiere al directorio tomcat por un proceso "lento". En mi caso, es una transferencia de una máquina remota por scp. El tomcat puede notar que el archivo ha cambiado (fecha de modificación, etc.) antes de que termine la transferencia. A continuación, puede intentar implementar el archivo incompleto. Se encontrará con un error de zip.
Lo mismo puede ocurrir en teoría si copia el archivo de otro directorio; aunque las posibilidades son menores, ya que la copia es más rápida.
Para evitar el error por completo, el archivo debe moverse (no copiarse) desde otra ubicación en el mismo disco. Tal movimiento es (creo) atómico.
Mientras desarrollo, tener el error que ocurre de vez en cuando no es un gran problema; cuando lo encuentro, simplemente reinicio la transferencia.
Tuve el mismo problema ( java.lang.IllegalArgumentException: Invalid or unreadable WAR file
). Para mí, la causa fue que tuve catalina-6.0.43.jar
incluida en mi archivo WAR. Para deshacerse del error, creé un nuevo archivo WAR que no incluía este contenedor, luego Tomcat 7 pudo iniciar la aplicación con éxito. Desafortunadamente, esta solución solo funcionó para Tomcat 7. Todavía estoy obteniendo el mismo error cuando trato de implementar exactamente la misma GUERRA en Tomcat 8.
En mi caso, estaba usando WinSCP para transferir el archivo. Lo intenté muchas veces con todas las sugerencias que se describen aquí. Todo lo que hice para que funcione fue reiniciar el WinSCP y el gato pudo leer el archivo.
Gracias @BalusC. Tenía el mismo problema. Intenté muchas opciones. Pensé que esto se debía a que lib agregué a maven sin alcance de prototipo y como resultado también fue al archivo de guerra, corregido, el mismo resultado. Puedo abrirlo como un zip y todo se ve bien allí.
Intenté localmente (diferente versión de tomcat: 7.0.67 versus 7.0.22 con la que tengo problemas) funciona bien. Luego intenté con 7.0.22 pero en diferentes VM (instancia) - funciona bien. Sospecho que hay algo con Tomcat o probablemente conflicto con otros archivos was (eso es solo una diferencia con otras VM, todas incluidas Java son las mismas).
El problema se resolvió para mí usando una instancia diferente de tomcat.
Desafortunadamente, la causa y la solución no son tan obvias como sugiere Buhake Sindi . He visto este problema varias veces en varios foros. Incluso lo he experimentado yo mismo al menos una vez. Google da actualmente más de 500 visitas en el mensaje de excepción exacto . Todo permanece sin respuesta. Sin embargo, hay indicios de que funciona en IDE X, pero no en IDE Y y que funciona en el Servidor X, pero no en el Servidor Y. O que eliminar o agregar algo desde / hacia la GUERRA funciona (un ejemplo típico se puede encontrar aquí) ) Sin embargo, nadie ha explicado en profundidad la verdadera causa raíz.
Creo que tiene algo que ver con una combinación de la versión JDK / JRE utilizada y el tamaño del archivo WAR. Aquí hay algunas cosas que puedes probar:
- Intente actualizar / alinear la versión JDK / JRE en su entorno IDE y / o servidor de aplicaciones.
- Intenta agregar algo al WAR, algún archivo aleatorio JAR o JSP o lo que sea y luego reconstruye.