gpt4 book ai didi

java - 在 Tomcat 8.0.3 上部署

转载 作者:行者123 更新时间:2023-11-28 22:58:44 24 4
gpt4 key购买 nike

我正在尝试在 Tomcat 8.0.3 上部署我的 spring 应用程序。 servlet 容器使用 jdk 1.0.7_51。我能够通过

进行部署

mvn tomcat7:plugin

但是当 Tomcat 尝试运行应用程序时。在日志文件中我得到这个异常:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in URL [file:/home/myApp/apache-tomcat-8.0.3/webapps/myApp/WEB-INF/classes/database.xml]: Invocation of init method failed; nested exception is java.lang.SecurityException: class "org.eclipse.persistence.sessions.coordination.CommandProcessor"'s signer information does not match signer information of other classes in the same package
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:420)
at org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:277)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.detectPersistenceExceptionTranslators(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.<init>(PersistenceExceptionTranslationInterceptor.java:79)
at org.springframework.dao.annotation.PersistenceExceptionTranslationAdvisor.<init>(PersistenceExceptionTranslationAdvisor.java:70)
at org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor.setBeanFactory(PersistenceExceptionTranslationPostProcessor.java:103)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeAwareMethods(AbstractAutowireCapableBeanFactory.java:1475)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1443)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
... 55 more

我也跑过

mvn dependency:tree|findstr eclipse

我得到了这个结果

[INFO] |  |  +- org.eclipse.persistence:org.eclipse.persistence.jpa:jar:2.5.1:compile
[INFO] | | | +- org.eclipse.persistence:javax.persistence:jar:2.1.0:compile
[INFO] | | | +- org.eclipse.persistence:org.eclipse.persistence.asm:jar:2.5.1:compile
[INFO] | | | +- org.eclipse.persistence:org.eclipse.persistence.antlr:jar:2.5.1:compile
[INFO] | | | +- org.eclipse.persistence:org.eclipse.persistence.jpa.jpql:jar:2.5.1:compile
[INFO] | | | \- org.eclipse.persistence:org.eclipse.persistence.core:jar:2.5.1:compile
[INFO] | | \- org.eclipse.persistence:eclipselink:jar:2.3.2:compile
[INFO] | | +- eclipse:jdtcore:jar:3.1.0:compile

我该如何解决?

最佳答案

您有多个 JAR 提供包 org.eclipse.persistence.sessions.coordination 中的类,但其中一些 JAR 已签名,一些未签名。 Java 类加载器不允许这样做。

解决这个问题的难易程度取决于具体情况。

如果签名的 JAR 提供的类也由未签名的 JAR 提供,并且应用程序可以在没有签名的 JAR 的情况下运行,那么只需删除签名的 JAR。

如果未签名的 JAR 提供的类也由已签名的 JAR 提供,并且应用程序可以在没有未签名的 JAR 的情况下运行,那么只需删除未签名的 JAR。

如果签名的 JAR 提供的类也由未签名的 JAR 提供,但应用程序在没有签名的 JAR 的情况下无法运行,那么您需要强制 Tomcat 加载未签名的 JAR (s) 首先。以下是 ASF 如何使用 Jira 来解决运行在 Tomcat 8 上的 Jira 6.2 的这个问题。这需要添加到 Web 应用程序的 context.xml 中。

<Resources>
<!-- Trick to force this JAR to be searched for classes before all others
to work around a Jira bug -->
<PreResources className="org.apache.catalina.webresources.FileResourceSet"
base="${catalina.base}/webapps/jira/WEB-INF/lib/jira-api-6.2.jar"
webAppMount="/WEB-INF/lib/jira-api-6.2.jar" />
</Resources>

与删除一样,您可以将其翻转以首先加载已签名的 JAR。

如果以上方法都不起作用,您可以解压已签名的 JAR,然后在没有签名的情况下重新打包它们,但如果在任何地方都需要签名的 JAR,这可能会破坏某些内容。

关于java - 在 Tomcat 8.0.3 上部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22684482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com