操作系统:CentOS 7 3.10.0-693.11.1.el7.x86_64
Jvm:1.8.0_151-b12
Spring框架版本:1.5.9.RELEASE
Apache:2.4.6
Tomcat:7.0.76
设置: Apache用作反向代理来提供在tomcat上运行的java应用程序。 .war文件是使用maven创建的,并通过tomcat中的管理器应用程序进行部署。 我之前遇到了一些问题,因为它的实际文件大小为108MB所以我不得不增加上传大小并且已经解决了,而且应用程序也可以在STS IDE中本地运行,并且没有问题。
问题描述:通过tomcat中的管理器应用程序部署应用程序后,当我尝试访问应用程序“404”时出现错误。然后我去了日志文件,我收到了以下消息:
SEVERE: Unable to process Jar entry [com/amazonaws/services/redshift/waiters/ClusterDeleted$IsCreatingMatcher.class] from Jar [jar:file:/usr/share/tomcat/webapps/myApplication-0.0.1-SNAPSHOT/WEB-INF/lib/aws-java-sdk-redshift-1.11.106.jar!/] for annotations
应用程序确实在AWS API上进行中继,并且已在pom.xml文件中指定了依赖关系
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.106</version>
</dependency>
另一方面,我看到其他人遇到了类似的问题,或者我应该用不同的依赖关系说出完全相同的问题。
链接1:How to solve : Unable to Process Jar entry
链接2:Deploy a war project on tomcat 7.0.56, get error " Unable to process Jar entry"
链接3:Unable to process jar entry from Jar
链接2的帖子中没有回复,但链接1帖子中有回复,其中我所能看到的大部分解决方案都是针对该依赖的,并且有人提到tomcat的更新到tomcat 8为他们解决了问题。这我想避免,因为我更喜欢使用centos repos中提供的版本。没有从第三个链接得到更多,除了建议的tomcat更新。如果声明不应该使用7.0.58版本的tomcat,那么我再次使用更新的版本。
谢谢大家的时间和精力。
答案 0 :(得分:0)
好的,所以最后我设法找到问题的根源并找到原因,然后找到解决方案。
我做的第一件事是转到catalina日志并检查出来,结果发现有大量与jar文件有关的错误。然后我去了catalina日志文件中引用的那些jar文件,我检查了与原始jar文件的哈希值不匹配的哈希值。这通常意味着一件事,要么您有不同的jar文件,要么jar文件已损坏。 因此问题的根本原因是jar文件损坏,问题与tomcat和各个库的版本无关。
解决方案:
将当前的.m2文件夹重命名为.m2-corrupt,或任何你想要的,你也可以删除它,但更安全然后抱歉。
暂时将目标文件夹中的.war文件移动到
执行maven更新
重新创建.war文件
尝试部署新的.war文件,看看它是怎么回事,对我来说很顺利。
由于一切顺利,我删除了旧的.m2文件夹和旧的.war文件
注意:我希望这可以节省一些时间,然后帮助。