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

标签 java spring hibernate jpa weblogic

我遇到了一个经典问题,即尝试在 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/

相关文章:

spring - 在 spring-data-jpa 中对存储库方法实现自定义行为

hibernate - MappingJackson2HttpMessageConverter 找不到类型的(映射)键反序列化器

spring-boot - 有没有一种简单的方法可以更改应用程序iml中的目录以构建用于测试的文件夹?

spring - org.springframework.web.filter.CharacterEncodingFilter 无法转换为 javax.servlet.Filter

spring - 如何限制每个用户只能进行一个 session 并阻止后续的登录尝试?

hibernate - JPA 2.0/Hibernate - 为什么 hibernate 在删除之前发出选择计数 (*) 查询

java - 为什么hibernate为OneToMany映射生成插入和更新

java - Spring Boot Controller 未被映射

java - 同一程序中的变量 jsp 和 java

Java HashMap : How to get a key and value by index?