【问题标题】:Invalid signature file digest for Manifest main attributes when running tomcat运行 tomcat 时 Manifest 主要属性的签名文件摘要无效
【发布时间】:2015-11-14 07:02:27
【问题描述】:

我在这里绝望了。我可以在本地的 tomcat7 服务器上启动我的 webApp,但是当我在 pom.xml(它是我的 WebApp 所需的模块)中添加一个 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)

【问题讨论】:

  • 您要包含哪个 jar?是第三方的还是你自己的?以及如何包含它?请将您的 pom.xml 或 sn-p 添加到您的问题中。

标签: java maven tomcat pom.xml


【解决方案1】:

这让我今天发疯了。最后,我发现了对 org.bouncycastle 库的依赖关系,在它工作了几个月没有改变之后,导致这种情况出乎意料 - 删除

'org.bouncycastle:bcprov-jdk16:1.45' 

'org.bouncycastle:bcpg-jdk16:1.46' 

从依赖项为我解决了这个问题。

【讨论】:

  • 检查所有带有 bcmail**、bcpkix**、bcprov** 前缀的 jars
【解决方案2】:

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

在我的例子中,我将充气城堡 JAR 文件按原样部署到 Tomcat 中(没有将其分解为胖 JAR)。但是,在我们的构建过程中,我们有一个插件可以使我们的构建可重现(如果源未更改,每个构建都会生成相同的哈希)。同一个插件正在更改充气城堡 JAR(以去除一些会导致 JAR 哈希在构建之间发生变化的时间相关信息),从而导致错误。

虽然这可能不是您的确切问题,但我希望这会有所帮助。此错误的根本原因是某些东西正在修改充气城堡签名的 JAR 文件,从而导致签名不再匹配。查看您的构建过程,并在部署 JAR 文件之前检查它们是否可能正在修改它们(例如 packaging everything as a fat JAR)。

【讨论】:

    猜你喜欢
    • 2021-05-17
    • 2018-10-05
    • 2019-12-18
    • 2016-04-23
    • 2019-03-03
    • 1970-01-01
    • 2012-08-29
    • 2015-11-22
    • 2018-11-13
    相关资源
    最近更新 更多