web-dev-qa-db-fra.com

difficulté à déployer .WAR à tomcat

j'ai du mal à déployer un fichier de guerre sur Tomcat.

j'ai écrit une application Web dans Netbeans sur ma machine Windows. tout se passe bien. Ce que je veux faire, c'est déployer l'application sur mon ordinateur Linux qui agit en tant que mon serveur. une fois l'application créée, je copie le fichier war du dossier dist du dossier de mon projet sur une clé USB. Je le copie ensuite sur le bureau de mon ordinateur Linux.

je lance ensuite Tomcat et, à l'aide du gestionnaire d'applications, je navigue dans le fichier war à déployer, puis cliquez sur déployer. Je reçois un message en haut du navigateur disant «OK». mais si je regarde ma sortie Tomcat dans la fenêtre du terminal, j'ai l'erreur suivante:

4/01/2011 5:09:07 PM org.Apache.catalina.startup.HostConfig deployWAR
INFO: Deploying web application archive Kingdoms.war
4/01/2011 5:09:07 PM org.Apache.catalina.startup.ContextConfig init
SEVERE: Exception fixing docBase for context [/Kingdoms] 
Java.util.Zip.ZipException: invalid CEN header (bad signature)
    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:111)
    at org.Apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.Java:706)
    at org.Apache.catalina.startup.ContextConfig.init(ContextConfig.Java:829)
    at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:334)
    at org.Apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.Java:119)
    at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:89)
    at org.Apache.catalina.util.LifecycleBase.setState(LifecycleBase.Java:328)
    at org.Apache.catalina.util.LifecycleBase.setState(LifecycleBase.Java:308)
    at org.Apache.catalina.util.LifecycleBase.init(LifecycleBase.Java:102)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:131)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:812)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:787)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:570)
    at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:891)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:491)
    at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1322)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at org.Apache.Tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:297)
    at com.Sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:836)
    at com.Sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:761)
    at org.Apache.catalina.manager.ManagerServlet.check(ManagerServlet.Java:1467)
    at org.Apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.Java:332)
    at org.Apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.Java:209)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:306)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.Java:186)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:244)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:240)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:161)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:561)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:164)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:108)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:558)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:379)
    at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:243)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:259)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:237)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:281)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext resourcesStart
SEVERE: Error starting static Resources
Java.lang.IllegalArgumentException: Invalid or unreadable WAR file : invalid CEN header (bad signature)
    at org.Apache.naming.resources.WARDirContext.setDocBase(WARDirContext.Java:142)
    at org.Apache.catalina.core.StandardContext.resourcesStart(StandardContext.Java:4657)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:4815)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:140)
    at org.Apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.Java:812)
    at org.Apache.catalina.core.ContainerBase.addChild(ContainerBase.Java:787)
    at org.Apache.catalina.core.StandardHost.addChild(StandardHost.Java:570)
    at org.Apache.catalina.startup.HostConfig.deployWAR(HostConfig.Java:891)
    at org.Apache.catalina.startup.HostConfig.deployApps(HostConfig.Java:491)
    at org.Apache.catalina.startup.HostConfig.check(HostConfig.Java:1322)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:39)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:25)
    at Java.lang.reflect.Method.invoke(Method.Java:597)
    at org.Apache.Tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.Java:297)
    at com.Sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.Java:836)
    at com.Sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.Java:761)
    at org.Apache.catalina.manager.ManagerServlet.check(ManagerServlet.Java:1467)
    at org.Apache.catalina.manager.HTMLManagerServlet.upload(HTMLManagerServlet.Java:332)
    at org.Apache.catalina.manager.HTMLManagerServlet.doPost(HTMLManagerServlet.Java:209)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:641)
    at javax.servlet.http.HttpServlet.service(HttpServlet.Java:722)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:306)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.filters.CsrfPreventionFilter.doFilter(CsrfPreventionFilter.Java:186)
    at org.Apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.Java:244)
    at org.Apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.Java:210)
    at org.Apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.Java:240)
    at org.Apache.catalina.core.StandardContextValve.invoke(StandardContextValve.Java:161)
    at org.Apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.Java:561)
    at org.Apache.catalina.core.StandardHostValve.invoke(StandardHostValve.Java:164)
    at org.Apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.Java:108)
    at org.Apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.Java:558)
    at org.Apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.Java:118)
    at org.Apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.Java:379)
    at org.Apache.coyote.http11.Http11Processor.process(Http11Processor.Java:243)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:259)
    at org.Apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.Java:237)
    at org.Apache.Tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.Java:281)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.Java:886)
    at Java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.Java:908)
    at Java.lang.Thread.run(Thread.Java:662)
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error in resourceStart()
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Error getConfigured
4/01/2011 5:09:07 PM org.Apache.catalina.core.StandardContext startInternal
SEVERE: Context [/Kingdoms] startup failed due to previous errors

aussi, je peux maintenant voir dans la liste des applications, mon application. Je clique sur Démarrer dans les commandes de l'application, mais je reçois un message en haut de l'écran disant «ÉCHEC - L'application sur le chemin du contexte/Kingdoms n'a pas pu être démarrée».

qu'est-ce que je fais mal? Comment régler ceci?

14
David

les archives de guerre sont corrompues ou invalides.

vérifiez que la procédure de génération de guerre n'échoue pas et que le fichier war est un fichier Zip valide avant de le copier sur votre clé USB, etc.

si vous êtes sur Windows, vous pouvez le faire en modifiant l’extension de fichier .Zip et en l’ouvrant avec un programme Zip tel que winzip ou winrar.

si vous utilisez un autre système d'exploitation, vous n'avez probablement pas besoin de changer l'extension.

si la guerre est un fichier Zip valide, il est probablement corrompu à la suite de votre processus de transfert, c'est-à-dire aller sur ou depuis votre clé USB.

14
pstanton

Il pourrait s'agir d'un problème de protection de fichier, que vous pouvez résoudre en émettant quelque chose comme:

il m'est arrivé que mon sftp vienne de gifler un 700 sur le fichier transféré, ce qui a provoqué cette erreur.

10
Helmut

Cela peut être dû à l'une des raisons suivantes.

  • Fichier WAR corrompu 
  • Fichiers JAR corrompus sous le dossier WEB-INF/lib
10
Ratna Dinakar

j'ai la même erreur - avec war tout ok, redémarrer Tomcat résoudre le problème donc je pense que c'est parce que Tomcat commence à déployer la guerre avant qu'elle ne soit complètement téléchargée

2
Ivan

J'ai eu le même problème, et reconstruire/télécharger la guerre ne réglait PAS le problème. Ce que j’ai finalement fait pour résoudre le problème, c’était de télécharger la guerre sous un nom différent, puis de la renommer une fois déployée avec succès. C'est un peu bizarre que cela fonctionne, mais c'était une meilleure solution pour moi que de redémarrer Tomcat.

1
CullenJ

Dans mon cas, c'était le fichier manifeste.

Class-Path: 

devrait être suivi d'un espace.

0
czupe

Recherchez également les autorisations de fichier du fichier .war que vous avez déployé. Pour moi c'était la cause.

0
302Found

peut-être aussi à cause d'une entrée incorrecte dans solr.xml Elle doit indiquer où se trouve le fichier .war.

0
Ian

La première chose à vérifier est de savoir si vous avez de l'espace libre sur votre disque. Si votre partition est pleine à 100%, il sera impossible d'extraire le fichier .WAR.

0
kazy