gpt4 book ai didi

java - Weblogic JPA 2.1 Hibernate 4 不工作 java.lang.NoSuchMethodError

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:22 25 4
gpt4 key购买 nike

我遇到了一个经典问题,即尝试在 weblogic 服务器上运行 web 应用程序并由于 weblogic 服务器具有类的旧副本而遇到错误。

我遇到的主要问题是在尝试使用 JPA 2.1 时出现以下问题:

weblogic.application.ModuleException: java.lang.NoSuchMethodError: javax.persistence.Table.indexes()[Ljavax/persistence/Index;

这里明显的答案是它在没有该类的服务器上使用 JPA 版本。

我已将我的 weblogic.xml 文件设置为以下内容:

<wls:weblogic-web-app xmlns:wls="http://xmlns.oracle.com/weblogic/weblogic-web-app" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.7/weblogic-web-app.xsd">
<wls:weblogic-version>12.1.3</wls:weblogic-version>
<wls:jsp-descriptor/>
<wls:debug>true</wls:debug>
</wls:jsp-descriptor>
<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>
<wls:context-root>DiscoveryPortal</wls:context-root>
</wls:weblogic-web-app>

关键是: 首选 web-inf-classes: true

这似乎适用于某些类,但并非全部。

最佳答案

Weblogic 12c(据说)允许在 .war 和 .ear 文件中进行类过滤。我建议从:

<wls:container-descriptor>
<wls:prefer-web-inf-classes>true</wls:prefer-web-inf-classes>
</wls:container-descriptor>

到:

<prefer-application-packages> 
<package-name>javax.persistence.*</package-name>
</prefer-application-packages>

<prefer-application-resources>
<resource-name>javax.persistence.*</resource-name>
<resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
</prefer-application-resources>

过滤似乎比 prefer-web-inf-classes 更有效。

请参阅 Oracle 文档 here那说它适用于 .war 文件。如果没有,您可以考虑切换到 .ear 看看会发生什么。

关于java - Weblogic JPA 2.1 Hibernate 4 不工作 java.lang.NoSuchMethodError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28051550/

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