在Eclipse里的Tomcat发布项目报错了:Could not publish to the server. java.lang.IndexOutOfBoundsException
然后在实际的tomcat中启动也报错:
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@1e7c7811]
at ...
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@1e7c7811]
at ...
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at ...
查看日志发现这一行:java.util.zip.ZipException
证明是压缩包出错了,很大可能是lib下的jar出错了,而我用的又是maven来管理包,那么就证明是maven本地仓库出错了。
那么,lib报下这么多jar如何判定是哪个jar出错了呢?(PS:也可能是jar下的某一文件错了)
可以通过对jar解压来判断,假设项目war包为,abc.war——
首先将abc.war通过解压工具解压,然后进入WEB-INF/lib目录,将所有jar都解压一次(PS:批量解压),此时会看到解压工具报错:
从上图可以看出是 httpclient-4.5.3.jar错了
那么现在来到maven本地仓库的目录
在搜索栏搜索“httpclient-4.5.3.jar”:
右键 httpclient-4.5.3.jar
选择“打开文件位置”,此时进入了httpclient-4.5.3.jar所在目录:
将整个httpclient/4.5.3目录下的文件全部删除即可。
如果遇到“文件被使用”提示,可能文件本身就被eclipse占用,可尝试退出eclipse再试。
此时,回到eclipse进行 Maven Update即可。
向来喜欢简单粗暴的解决方式╮(╯▽╰)╭,