首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WebLogic11G: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()

WebLogic11G: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()
EN

Stack Overflow用户
提问于 2012-11-30 14:01:20
回答 2查看 5.1K关注 0票数 0

当使用WebLogic11G时,我面临以下错误。

代码语言:javascript
复制
weblogic.application.ModuleException: 
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1514)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:486)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:41)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
Truncated. see log file for complete stacktrace

Caused By: java.lang.NoSuchMethodError: javax.persistence.OneToMany.orphanRemoval()Z
at org.hibernate.cfg.AnnotationBinder.processElementAnnotations(AnnotationBinder.java:1912)
at org.hibernate.cfg.AnnotationBinder.processIdPropertiesIfNotAlready(AnnotationBinder.java:79
at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:707)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:4035)
at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3989)

让我给你更多的细节。我的web应用程序包含ejb3-persistence-1.0.2.GA.jarhibernate-jpa-2.0-api-1.0.1.Final.jar jar文件,其中hibernate-jpa-2.0-api-1.0.1.Final.jar包含orphanRemoval()方法,而ejb3-persistence-1.0.2.GA.jar没有。

通过下面的规范,我已经将weblogic配置为加载应用程序库,而不是weblogic库。

weblogic-application.xml

代码语言:javascript
复制
<prefer-application-packages>
    <package-name>antlr.*</package-name>
    <package-name>org.mozilla.javascript.*</package-name>
    <package-name>org.mozilla.classfile.*</package-name>
    <package-name>javax.persistence.*</package-name>
</prefer-application-packages>

因此,我似乎需要告诉服务器从hibernate-jpa-2.0-api-1.0.1.Final.jar加载所需的类,而不是ejb3-persistence-1.0.2.GA.jar文件,但是我不知道怎么做呢?

你的帮助将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2012-11-30 14:18:18

如果jar加载出现问题,就会发生java.lang.NoSuchMethodError。我认为在您试图运行此代码的系统上,CLASSPATH设置为加载jar的旧版本的某个路径。使用以下代码查找ClassLoader解析依赖项的路径

代码语言:javascript
复制
public static void main(String[] args) {
            URLClassLoader classLoader = (URLClassLoader)Main.class.getClassLoader();
            System.out.println(Arrays.toString(classLoader.getURLs()));
    }

将此方法放入Main类中,并在产生此错误的系统中执行。它将显示解决依赖关系的所有路径。找出这些路径中是否有更旧版本的jar。

希望这对你的事业有帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-05-23 13:54:05

似乎在类路径上有不同版本的类,这在类加载器层次结构中更高。Weblogic本身有大量嵌入到standart weblogic安装的库。要验证这一点,请使用-verbose JVM选项查看类的加载位置。如果情况比使用更好,那么类加载筛选就会像实际一样解决您的问题。(当库中的shiped位于系统类路径上时,它们会优先于存档中的任何其他库)。使用这个类加载筛选,您可以打破这个,并获得适当的版本加载。我想不同的容器有不同的标签。查看weblogic文档。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13646737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档