无法启动Tomcat 8:Zip文件异常

5
执行了以下操作:
  1. 安装了新的Tomcat 8.0.23和8.0.36,并使用了它们。
  2. 同时使用Java 8和7(更改了Java 8版本为update 45和91)。
  3. 将Tomcat文件夹的权限更改为777。
  4. 将Tomcat日志级别更改为FINEST以查看未打开的zip文件。 (不提供名称)
  5. 这些是容器日志,如果有帮助,可查看catalina.out文件

  6. 使用了一个简单的Tomcat,当然可以启动,所以系统没有问题。100%是我的exploded war中出现了问题,但无法确定具体问题在哪里。

请问有人能提供帮助吗?

Stacktrace :

SEVERE [localhost-startStop-1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild: start: 
 org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
        at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1092)
        at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1834)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@488d192]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
        at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4958)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5088)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@24c77366]
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:106)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:136)
        at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:699)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
        ... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file
        at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:139)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
        ... 16 more
Caused by: 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:219)
        at java.util.zip.ZipFile.<init>(ZipFile.java:149)

------------------------------------------------------------
2个回答

5

终于找到了问题所在。爆炸的war文件中有一个损坏的jar文件。手动下载和复制该jar文件到webapps中解决了这个问题。

感谢大家的支持!


1
你是怎么找出哪个文件损坏了的?我也遇到了同样的问题,请解释一下。 - kamokaze
@kamokaze:查看了其他已部署服务器(测试,暂存)的Web应用程序文件夹中的JAR大小。发现本地版本(从本地.m2获取)与测试服务器上相同的JAR大小不同。复制了相同的JAR并解决了问题。另外可能无关,但如果这种方法不起作用,您可以查找一个JAR的重复版本吗?我发现Maven有时会选择不需要的版本。希望您的问题能得到解决。 - Danyal
4
如果你在项目中使用Maven,运行“mvn clean compile”命令后,Maven会显示存储在本地仓库中的损坏文件,并且该文件已被复制到war文件中并破坏了包。 - radekpakula

0

你如何部署你的应用程序? 你将什么东西放入webapps文件夹中,是一个zip扩展名的文件,还是一个war扩展名的文件,或者是一个已解压的war文件夹?

尝试将扩展名从zip更改为war。

如果您使用zip或war文件,请尝试自行解压缩它。 如果在Windows上,请将扩展名更改为zip并使用Windows资源管理器打开;如果在Linux上,请尝试使用unzip命令。如果您无法手动解压缩,则意味着您的应用程序存在问题,zip文件已损坏,例如只下载了部分文件。

尝试阅读https://tomcat.apache.org/tomcat-7.0-doc/deployer-howto.html


我使用一个已经在问题中提到的 exploded war。Tomcat本身没有zip文件,我已经搜索过了。:( 这个war文件可以解压并部署,我也可以手动完成。 - Danyal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接