gpt4 book ai didi

java - Jboss 6.0 中 OpenJPA 的 ClassCastException

转载 作者:行者123 更新时间:2023-11-29 06:05:19 24 4
gpt4 key购买 nike

Jboss 6 附带 JPA 2.0 (hibernate-jpa-2.0-api.jar) 和 Hibernate 3.6.6 作为实现。

我有一个包含 OpenJPA 2.0 库 (openjpa-all-2.1.0.jar) 的 Web 应用程序。我已经在 jboss-web.xml 中设置了类加载器隔离,如下所示

<class-loading java2ClassLoadingCompliance="false">
<loader-repository>
some.example:loader=some-webapp.war
<loader-repository-config>java2ParentDelegation=false</loader-repository-config>
</loader-repository>
</class-loading>

当我部署应用程序时出现此错误

ERROR [AbstractKernelController] Error installing to Start: name=persistence.unit:unitName=some.war#some state=Create: java.lang.ClassCastException: org.apache.openjpa.persistence.PersistenceProviderImpl cannot be cast to javax.persistence.spi.PersistenceProvider

这很奇怪,因为 org.apache.openjpa.persistence.PersistenceProviderImpl 已经实现了 javax.persistence.spi.PersistenceProvider

我做了一个 -version:class 来检查 javax.persistence.spi.PersistenceProvider 是从哪里加载的,它似乎是从 Web 应用程序加载的首先 然后从 jboss6\common\lib

[Loaded javax.persistence.spi.PersistenceProviderResolverHolder$1 from vfs:/home/sathwik/apps/jboss-6.1.0.Final/server/default/deploy/some-webapp.war/WEB-INF/lib/openjpa-all-2.1.0.jar/]

[Loaded javax.persistence.spi.PersistenceProvider from vfs:/home/sathwik/apps/jboss-6.1.0.Final/common/lib/hibernate-jpa-2.0-api.jar/]

Manifest.mf 文件我能够收集用于编译的 JDK 版本hibernate-jpa-2.0-api.jar是用Build-Jdk: 1.5.0_19编译的,openjpa-all-2.1.0 使用Build-Jdk: 1.6.0_22

编译

谁能帮我理解为什么会出现这个异常?

最佳答案

根据OpenJPA Dependencies page , openjpa-all JAR 文件

[...] includes the OpenJPA core code plus all of the runtime dependencies for Java SE environments

您不是在 JavaSE 环境中运行,而是在成熟的 JavaEE 环境中,openjpa-all JAR 中已经包含许多辅助 API 类。因此,您会遇到因加载同名但来自不同类加载器的类而引起的冲突。

您应该将 openjpa-all 替换为更具体的 JAR 文件(即 openjpa-2.1.0.jar 以及使其工作所需的任何其他文件 - 参见上文页)。

关于java - Jboss 6.0 中 OpenJPA 的 ClassCastException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8725742/

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