2011-01-04 54 views
13

có sự cố khi triển khai tệp chiến tranh trên tomcat.gặp sự cố khi triển khai .WAR tới tomcat

tôi đã viết một ứng dụng web trên netbeans trên máy tính của mình. tất cả đều ổn. những gì tôi muốn làm là triển khai ứng dụng trên máy tính Linux hoạt động như máy chủ của tôi. một khi ứng dụng được xây dựng, tôi sao chép tập tin chiến tranh từ thư mục dist trong thư mục dự án của tôi vào một pendrive. tôi sau đó sao chép này vào máy tính để bàn của máy tính Linux của tôi.

tôi sau đó bắt đầu tomcat và sử dụng trình quản lý ứng dụng tôi duyệt tệp war để triển khai, sau đó nhấp triển khai. tôi nhận được thông báo ở đầu trình duyệt nói 'OK'. nhưng nếu tôi nhìn vào đầu ra tomcat của tôi trong cửa sổ terminal tôi có lỗi sau:

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 

Tôi cũng có thể xem trong danh sách ứng dụng, ứng dụng của tôi. tôi nhấp vào bắt đầu trong các lệnh cho ứng dụng nhưng nhận được thông báo ở đầu màn hình có nội dung 'FAIL - Ứng dụng tại ngữ cảnh/Vương quốc không thể bắt đầu'

tôi đang làm gì sai? làm thế nào để sửa lỗi này?

+0

Trong trường hợp của tôi, tôi đã thực hiện 'jar xvf' để trích xuất tệp, cập nhật tệp, sau đó cập nhật WAR. Nhưng tôi đã làm điều đó từ một thư mục ở trên như được mô tả trong https://issues.apache.org/jira/browse/MTOMCAT-104 - một khi tôi đã thay đổi thư mục làm việc của mình đến nơi WAR được định vị, tôi đã giải quyết vấn đề. – Philippe

Trả lời

12

các kho lưu trữ chiến tranh bị hỏng hoặc không hợp lệ.

kiểm tra rằng các thủ tục thế hệ chiến tranh không được thất bại và rằng tập tin chiến tranh là một file zip hợp lệ trước khi sao chép để bút của bạn lái xe, vv

nếu bạn đang ở trên cửa sổ bạn có thể làm điều này bằng cách thay đổi các tập tin mở rộng tới .zip và mở bằng chương trình zip chẳng hạn như winzip hoặc winrar.

nếu bạn đang sử dụng hệ điều hành khác, có thể bạn không cần phải thay đổi tiện ích.

nếu chiến tranh là mã zip hợp lệ, có thể nó bị hỏng do quá trình chuyển của bạn tức là đi vào hoặc từ ổ đĩa bút của bạn.

+0

tôi đã tìm thấy một tệp trong thư mục lib không thể nhúc nhích. tôi cũng nghĩ rằng các pendrive doesnt như các tập tin chiến tranh, đã thử một số khác và nó làm việc. ngẫu nhiên. cảm ơn – David

+0

bạn có thể chấp nhận một trong các câu trả lời vì cả hai đều đúng. – pstanton

+0

Chạy vào đây với nhật thực, tái tạo dự án là phương thuốc duy nhất tôi có thể tìm thấy, mặc dù tất cả các tệp dự án dường như đúng và nhiều lần quét sạch/xây dựng. –

10

Điều này có thể do một trong các lý do sau.

  • hỏng tập tin WAR
  • file JAR Corrupted dưới WEB-INF thư mục/lib
+0

tôi đã tìm thấy một tệp trong thư mục lib không thể nhúc nhích. tôi cũng nghĩ rằng các pendrive doesnt như các tập tin chiến tranh, đã thử một số khác và nó làm việc. ngẫu nhiên. cảm ơn – David

10

Nó có thể là một vấn đề bảo vệ tập tin mà bạn có thể sửa chữa bằng cách phát hành một cái gì đó như: chmod 755 webapp.war

nó đã xảy ra với tôi rằng sftp của tôi sẽ chỉ tát một 700 trên tập tin chuyển nhượng, gây rằng lỗi.

2

có cùng lỗi - với chiến tranh tất cả ok, khởi động lại Tomcat quyết vấn đề vì vậy tôi nghĩ rằng nó là becouse Tomcat bắt đầu triển khai chiến tranh trước khi nó được tải lên hoàn toàn

+1

ah sẽ tạo ra rất nhiều ý nghĩa. nếu tệp lớn và bạn đã sao chép tệp trực tiếp vào vùng chứa tomcat. tôi nghĩ điều đó sẽ giải thích được vấn đề của tôi. wow này đã lâu rồi haha – David

1

tôi đã cùng một vấn đề, và xây dựng lại/tải lên chiến tranh đã không sửa chữa vấn đề. Những gì tôi đã kết thúc để sửa chữa nó đã được tải lên chiến tranh dưới một tên khác, sau đó đổi tên cuộc chiến khi nó đã triển khai thành công. Một chút kỳ lạ rằng điều này sẽ làm việc, nhưng nó là một giải pháp tốt hơn cho tôi hơn khởi động lại tomcat.

0

cũng có thể do mục nhập sai trong solr.xml Nó phải trỏ đến vị trí tệp .war được đặt.

0

Cũng tìm ra cho phép tập tin của tập tin .WAR bạn đã triển khai. Đối với tôi đó là nguyên nhân.

0

Trong trường hợp của tôi, đó là tệp kê khai.

Class-Path: 

phải theo sau là khoảng trắng.

0

Điều đầu tiên cần kiểm tra là bạn có dung lượng trống trên đĩa hay không. Nếu phân vùng của bạn là 100% đầy đủ, sau đó nó sẽ không thể trích xuất các tập tin .WAR.

Các vấn đề liên quan