一个第三方公司提供spring boot 项目,直接启动是ok的, 可是打包成war,经过Tomcat启动,就出现 ZipException: error in opening zip file:java
20-Mar-2019 15:48:28.385 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [F:\dev\apache-tomcat-8.5.24\webapps\cardmanager.war] 20-Mar-2019 15:48:28.597 严重 [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[/cardmanager]] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@7921dcac] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167) at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4860) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4995) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 10 more Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@5865a4ba] at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:112) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:140) at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:724) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 13 more Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:142) at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107) ... 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:215) at java.util.zip.ZipFile.<init>(ZipFile.java:145) at java.util.jar.JarFile.<init>(JarFile.java:153) at java.util.jar.JarFile.<init>(JarFile.java:117) at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:188) at org.apache.tomcat.util.compat.JreCompat.jarFileNewInstance(JreCompat.java:173) at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:139) ... 17 more 20-Mar-2019 15:48:28.610 严重 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Error deploying web application archive [F:\dev\apache-tomcat-8.5.24\webapps\cardmanager.war] java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/cardmanager]] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:756) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:986) at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1857) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java:262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) 20-Mar-2019 15:48:28.620 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deployment of web application archive [F:\dev\apache-tomcat-8.5.24\webapps\cardmanager.war] has finished in [234] ms 20-Mar-2019 15:48:28.621 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployWAR Deploying web application archive [F:\dev\apache-tomcat-8.5.24\webapps\cardmanager_20190320.war]
我也真是郁闷了, 搞了几个小时仍是没有发现缘由哦!web
为何第三方公司 启动就ok呢? 它们有私服,我这里没有使用私服, 依赖的ojdbc 的jar 是经过system引入的,因此。spring
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <fork>true</fork> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webResources> <resource> <directory>${project.basedir}/../lib</directory> <targetPath>WEB-INF/lib</targetPath> <filtering>true</filtering> <includes> <include>**/*.jar</include> </includes> </resource> </webResources> <warName>cardmanager</warName> </configuration> </plugin> </plugins> </build>
...数据库
Maven 编译打包都没有问题,为何就是不行呢? war 自己应该是没问题的吧?apache
不过, 从上面的错误日志来看,确实是出现了问题。 搜索了半天,尝试了半天,仍是不行。有的博客上说,删除maven的资源库中全部的jar包,而后从新经过maven编译项目,我试了不行。。tomcat
https://blog.csdn.net/u012012240/article/details/79571539上说:服务器
问题:
spring-boot项目本地运行没问题,部署线上出现环境问题,由于本地spring-boot使用tomcat8内置jar包(存放于lib文件夹下),线上配置的tomcat7环境而使用tomcat8的jar包,因此报错。app
解决:
1.在pom文件中将tomcat的版本调整为tomcat7,编译后替换下上的tomcat jar包(亲测可用)
2.修改线上tomcat环境为tomcat8环境(感兴趣的能够试试,项目时间紧就没试)webapp
参考文章:http://blog.csdn.net/asdfsfsdgdfgh/article/details/52127562maven
难道我Tomcat有问题? 发现都是 tomcat8, 应该是不存在这样的问题的吧!
https://blog.csdn.net/qq_31293575/article/details/84262302 上说:
idea在建立目录a后再建立目录b,会出现建立出a.b目录的问题,这会影响到tomcat编译启动
须要在建立目录a后随便建立一个文件,而后再建立b目录。(idea的bug)
感受完成是胡扯
偶然发现 个人 本地引入的ojdbc的版本是ojdbc14_g.jar, 而 他们的是 ojdbc7-12.1.0.1.0.jar, 难道这个缘由?
替换成了他们的jar,发现仍是不行。。
https://blog.csdn.net/qq_23599977/article/details/78140470 上说:
以后排查仓库问题,发现是spring-context包下载问题。根本就没有这方面想,公司本身搭建的maven服务器,下载还能出错??并且mavenjar下载失败,你也报个问题啊,仍是build success!
我这里仓库难道有问题? 坐卧不安啊! 可是经过-X 参数调试过了,并无发现error 信息。 可见,并非仓库问题吧。
https://blog.csdn.net/wujunyucg/article/details/78437601 上说:
首先检查有没有 zip 包
没有 zip 包,那剩下的只能是 jar 包。
在网上搜了一阵后,发现不少状况是在 maven 打包是就出现了这个错误,就能找到是哪一个包,以后就好解决了。
可是我每次都是没有错误,成功打包
以后花式打包,调各类参数,都失败了
在这样的状况下,只能调试 tomcat 了(我想到的本办法,若是有更好的办法请告述我!!!)
以后就是调试 tomcat 源码了,详情请点击。
tomcat 源码 org.apache.catalina.util.LifecycleBase.init 这个位置打断点,终于发现是哪一个 jar 包了。
发现只剩调试 tomcat 源码一条路了, 这也太麻烦了吧, 我真是不肯意。。
后面发现, 个人war 解压后, 对应的 ojdbc jar 的大小发生了变化, 他们的 ojdbc7-12.1.0.1.0.jar 大小是3319k, 个人war 解压后的ojdbc7-12.1.0.1.0.jar 大小是5872k 应该已经不是原始的那个了jar!
双击经过jd-gui 打开 发现没有任何内容! 后缀改成 zip ,而后解压, 发现了下面的错误:
这就奇怪了,虽然大小是5872k,可是没法正常解压! 应该是压缩的过程出现了问题!!
手动替换 ojdbc7-12.1.0.1.0.jar 为他们的jar 就行了! 固然,这不是最终的解决方案。
这样看来, 能够确定的是 spring-boot-maven-plugin 或者 maven-war-plugin 插件对 scope 为 system的 dependency 作了什么手脚!!
最终的方案其实很简单,以下,把 filtering 配置成 fasle 就能够了!!! :
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <configuration> <webResources> <resource> <directory>${project.basedir}/src/main/resources/ify</directory> <targetPath>WEB-INF/lib</targetPath> <filtering>false</filtering> <includes> <include>**/*.jar</include> </includes> </resource> </webResources> </configuration> </plugin>
里面lib 的jar 彻底没有被压缩,都是原始大小:
确实是解压的时候出的错, 不过不是解压war的时候出现问题(实际上war 的解压是彻底正常的), 而是 启动时, 链接数据库,而后加载class,而后 引用到 对应的ojdbc jar 的时候出现的问题!
这个错误提示 , 根本看不到哪里的问题, 真是坑!
参考:
https://blog.csdn.net/wujunyucg/article/details/78438836
https://blog.csdn.net/wujunyucg/article/details/78437601
https://blog.csdn.net/qq_35246620/article/details/75013964
https://blog.csdn.net/wangming520liwei/article/details/78222793
https://blog.csdn.net/xiang_6119/article/details/80169465
https://blog.csdn.net/u013041642/article/details/82988604