it-roy-ru.com

проблема развертывания .WAR для кота

у меня проблемы с развертыванием файла войны на Tomcat.

я написал веб-приложение в NetBeans на моей машине Windows. все работает нормально. то, что я хочу сделать, это развернуть приложение на моем компьютере с Linux, который действует как мой сервер. Как только приложение построено, я копирую файл war из папки dist в каталоге моего проекта на pendrive. Затем я копирую это на рабочий стол моего компьютера с Linux.

затем я запускаю Tomcat и, используя менеджер приложений, просматриваю файл war для развертывания, затем нажимаю развертывание. в верхней части браузера появляется сообщение «ОК». все же, если я смотрю на свой вывод Tomcat в окне терминала, у меня появляется следующая ошибка:

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

также я теперь могу видеть в списке приложений, мое приложение. Я нажимаю кнопку «Пуск» в командах для приложения, но в верхней части экрана появляется сообщение «FAIL - Приложение по контекстному пути/Kingdoms не может быть запущено».

что я делаю неправильно? как это исправить?

14
David

архив войны поврежден или недействителен.

убедитесь, что процедура генерации войны не завершается с ошибкой и что файл war является действительным Zip-файлом, прежде чем копировать его на накопитель и т. д.

если вы работаете в Windows, вы можете сделать это, изменив расширение файла на .Zip и открыв его с помощью программы Zip, такой как winzip или winrar.

если вы работаете в другой операционной системе, вам, вероятно, не нужно менять расширение.

если война - действительный почтовый индекс, он, вероятно, поврежден в результате вашего процесса передачи, т.е.

14
pstanton

Это может быть проблема защиты файла, которую можно исправить, выполнив что-то вроде: Chmod 755 webapp.war

со мной случилось так, что мой sftp просто ударил 700 по переданному файлу, вызвав эту ошибку.

10
Helmut

Это может быть связано с одной из следующих причин.

  • Поврежденный файл WAR 
  • Поврежденные файлы JAR в папке WEB-INF/lib
10
Ratna Dinakar

есть та же ошибка - с войной все в порядке, перезапуск Tomcat решает проблему так что я думаю, потому что Tomcat начинает развертывание войны, прежде чем он полностью загрузится

2
Ivan

У меня была такая же проблема, и перестройка/загрузка войны НЕ решали проблему. В итоге я решил загрузить войну под другим именем, а затем переименовать войну после ее успешного развертывания. Немного странно, что это сработает, но для меня это было лучшее решение, чем перезапуск Tomcat.

1
CullenJ

В моем случае это был файл манифеста.

Class-Path: 

должен сопровождаться пробелом.

0
czupe

Также обратите внимание на права доступа к файлу .war, который вы развернули. Для меня это было причиной.

0
302Found

также возможно из-за неправильной записи в solr.xml Он должен указывать, где находится файл .war.

0
Ian

Первое, что нужно проверить, есть ли у вас свободное место на диске. Если ваш раздел заполнен на 100%, извлечь файл .WAR будет невозможно.

0
kazy