2011-01-04 13 views
13

Ich habe Probleme beim Bereitstellen einer WAR-Datei auf Tomcat.Probleme bei der Bereitstellung .WAR to tomcat

Ich habe eine Webapp in Netbeans auf meiner Windows-Maschine geschrieben. Alles läuft gut. Ich möchte die Anwendung auf meinem Linux-Computer bereitstellen, der als mein Server fungiert. Sobald die Anwendung erstellt wurde, kopiere ich die WAR-Datei aus dem Ordner dist in meinem Projektverzeichnis auf einen USB-Stick. Ich kopiere das dann auf den Desktop meines Linux Computers.

Ich starte dann tomcat und benutze den application manager Ich suche in der WAR-Datei nach deploy, dann klicke auf deploy. Ich bekomme eine Nachricht im oberen Bereich des Browsers und sage "OK". doch wenn ich an meinem Kater Ausgabe im Terminalfenster aussehen habe ich folgende Fehlermeldung:

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 

auch ich kann jetzt in der Liste der Anwendungen sehen, meine App. Ich klicke auf Start in den Befehlen für die App, bekomme aber eine Nachricht oben auf dem Bildschirm, die sagt: "FAIL - Anwendung im Kontextpfad/Kingdoms konnte nicht gestartet werden"

was mache ich falsch? Wie behebt man das?

+0

In meinem Fall habe ich eine 'jar xvf' gemacht, um eine Datei zu extrahieren, zu aktualisieren und dann den WAR zu aktualisieren. Aber ich tat es aus einem Ordner oben, wie in https://issues.apache.org/jira/browse/MTOMCAT-104 beschrieben - nachdem ich mein Arbeitsverzeichnis geändert hatte, wo der WAR gefunden wurde, löste ich das Problem. – Philippe

Antwort

12

der Krieg Archiv ist beschädigt oder ungültig.

prüfen, ob die Prozedur Kriegsgeneration nicht versagt und dass der Krieg Datei eine gültige Zip-Datei ist vor dem Kopieren zu Ihrer Feder-Antrieb usw.

, wenn Sie auf Fenster sind, können Sie dies tun, indem Sie die Datei zu ändern Erweiterung auf .zip und Öffnen mit einem Zip-Programm wie Winzip oder Winrar.

Wenn Sie ein anderes Betriebssystem verwenden, müssen Sie die Erweiterung wahrscheinlich nicht ändern.

Wenn der Krieg ein gültiger Zip ist, wird er wahrscheinlich als Folge Ihres Übertragungsprozesses beschädigt, dh auf oder von Ihrem USB-Stick.

+0

Ich fand eine Datei im Lib-Ordner, die nicht rühren würde. ich denke auch, dass der pendrive kriegsdateien nicht mag, versuchte einen anderen und es funktionierte. zufällig. danke – David

+0

könntest du eine der Antworten akzeptieren, da sie beide richtig sind. – pstanton

+0

Mit der Eclipse kam ich dazu, das Projekt neu zu erstellen war das einzige Mittel, das ich finden konnte, obwohl alle Projektdateien korrekt waren und mehrere Clean/Build-Pässe hatten. –

10

Dies kann auf einen der folgenden Gründe zurückzuführen sein.

  • Beschädigter IST-Datei
  • verderbte JAR-Dateien unter WEB-INF/lib Ordner
+0

Ich fand eine Datei im lib-Ordner, die sich nicht bewegen würde. ich denke auch, dass der pendrive kriegsdateien nicht mag, versuchte einen anderen und es funktionierte. zufällig. danke – David

10

Es könnte einen Dateischutz Problem sein, das Sie etwas durch die Ausgabe wie beheben: chmod 755 webapp.war

geschah es mir, dass mein SFTP würde nur 700 auf der Datei übertragen schlagen, wodurch das Error.

2

gleiche Fehler haben - mit dem Krieg alles ok, neu zu starten Tomcat lösen Problem so denke ich, es ist becouse Tomcat Krieg einzusetzen beginnen, bevor es vollständig

hochgeladen
+1

ah das würde viel Sinn machen. wenn die Datei groß war und Sie sie direkt in den Tomcat-Container kopiert haben. Ich denke, das würde das Problem erklären, das ich hatte. Wow das war vor Ewigkeiten haha – David

1

hatte ich das gleiche Problem, und den Wiederaufbau/den Krieg Upload wurde nicht repariert das Problem. Was ich getan habe, um es zu reparieren, war, den Krieg unter einem anderen Namen hochzuladen und dann den Krieg umzubenennen, sobald er erfolgreich eingesetzt worden war. Ein bisschen seltsam, dass das funktionieren würde, aber es war eine bessere Lösung für mich, als Tomcat neu zu starten.

0

möglicherweise auch wegen einer falschen Eingabe in solr.xml Es muss darauf hinweisen, wo die WAR-Datei befindet.

0

für Dateiberechtigungen der WAR-Datei haben Sie im Einsatz sehen Sie auch heraus. Für mich war das der Grund.

0

In meinem Fall war es die Manifest-Datei.

Class-Path: 

sollte von einem Leerzeichen gefolgt werden.

0

Die erste Sache zu überprüfen ist, wenn Sie freien Speicherplatz auf Ihrer Festplatte haben. Wenn Ihre Partition zu 100% voll ist, kann die .WAR-Datei nicht extrahiert werden.

Verwandte Themen