Java 运行tomcat时清单主属性的签名文件摘要无效

Java 运行tomcat时清单主属性的签名文件摘要无效,java,maven,tomcat,pom.xml,Java,Maven,Tomcat,Pom.xml,我在这里越来越绝望了。我可以在tomcat7服务器上本地启动我的Web应用程序,但是当我在pom.xml(它是我的Web应用程序所需的一个模块)中添加一个jar时,我收到了这个错误,服务器将无法启动: SEVERE: A child container failed during start java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start compon

我在这里越来越绝望了。我可以在tomcat7服务器上本地启动我的Web应用程序,但是当我在pom.xml(它是我的Web应用程序所需的一个模块)中添加一个jar时,我收到了这个错误,服务器将无法启动:

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/densite-simulator-WebApp]]
    at java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.util.concurrent.FutureTask.get(FutureTask.java:192)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1122)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
    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 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/densite-simulator-WebApp]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
    ... 6 more
Caused by: java.lang.SecurityException: Invalid signature file digest for Manifest main attributes
    at sun.security.util.SignatureFileVerifier.processImpl(SignatureFileVerifier.java:284)
    at sun.security.util.SignatureFileVerifier.process(SignatureFileVerifier.java:238)
    at java.util.jar.JarVerifier.processEntry(JarVerifier.java:273)
    at java.util.jar.JarVerifier.update(JarVerifier.java:228)
    at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
    at java.util.jar.JarFile.getInputStream(JarFile.java:450)
    at org.apache.tomcat.util.scan.FileUrlJar.getEntryInputStream(FileUrlJar.java:97)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1964)
    at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1931)
    at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1916)
    at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1330)
    at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:889)
    at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5419)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)

这让我今天发疯。最后,我发现了一个对org.bouncycastle库的依赖性,在它运行了几个月后,突然间,这个依赖性导致了这个问题——删除了

'org.bouncycastle:bcprov-jdk16:1.45' 


从依赖项修复了我的问题。

我今天遇到了完全相同的问题。我的应用程序依赖于Bouncy Castle,Tomcat在尝试初始化servlet时抛出了这个异常

在我的例子中,我按照原样将bouncy castle JAR文件部署到Tomcat中(而没有将其分解到胖JAR中)。然而,在我们的构建过程中,我们有一个插件,使我们的构建具有可复制性(如果源代码不变,则每个构建生成相同的散列)。这个插件改变了bouncy castle JAR(去掉一些依赖时间的信息,这些信息会导致JAR的哈希在构建之间发生变化),从而导致错误


虽然这可能不是你真正的问题,但我希望这会有所帮助。此错误的根本原因是有东西正在修改bouncy castle签名的JAR文件,从而导致签名不再匹配。查看您的构建过程,并在部署JAR文件之前检查是否有东西在修改它们(例如)。

您希望包括哪个JAR?是第三方还是你自己的?你怎么把它包括进去?请在问题中添加pom.xml或片段。请检查带有bcmail**、bcpkix**、bcprov**前缀的JAR
'org.bouncycastle:bcpg-jdk16:1.46'