4

在 weblogic 10.3 中运行我的 spring2.5.6,jpa(hibernate3.4) webapp 时出现一个奇怪的错误


[ERROR] Javassist Enhancement failed: com.xxx.domain.model.Scheme
java.lang.NoSuchMethodError: pcGetManagedFieldCount
        at com.xxx.domain.model.Fund.<clinit>(Fund.java)
        at sun.misc.Unsafe.ensureClassInitialized(Native Method)
        at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAc
cessorFactory.java:25)

com.xxx.domain.model.Scheme 类是 single_table 继承层次结构上抽象基金实体的映射子类实体,并且层次结构上的所有实体都出现此错误。我同时使用带注释的类和 xml 元数据来定义我的持久性类的映射。

当应用程序部署到 weblogic 时,我只会收到此错误,因此使用 junit 一切正常。我已经尝试在 javaassit.jar 上升级到最新版本。

问题在我看来像是类加载顺序的问题,但我无法弄清楚。

PS。正如 bea 所建议的,我已将以下内容添加到 weblogic.xml

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

有人有任何想法、其他配置提示或我应该进行调查的方向吗?

4

4 回答 4

2

我有同样的问题。

我的实体扩展了一个类(@MappedSuperClass),它存在于一个 jar 依赖项中。我不得不将该类从 jar 移到我的项目中。只有这样它才能正常工作和部署。

解决此问题的另一种方法是在 persistence.xml 中明确指定您的实体

于 2010-01-21T23:24:21.340 回答
0

您可以发布实体类的代码吗?如果您不使用注释,您可以发布您的 hbm 映射文件的段吗?

你的类路径预感可能是正确的。在您的 weblogic-application.xml 中,试试这个

<prefer-application-packages>
  <package-name>antlr.*</package-name>
  <package-name>org.antlr.*</package-name>
</prefer-application-packages>

如果您还有更多日志输出,请同时发布。

于 2009-05-05T04:27:57.407 回答
0

抱歉,我的机器上只有 WebLogic 10.0,而且发行版中没有任何 javassist JAR。看起来 javassist 仅在 10.3 中添加用于 AOP 字节码生成。

从 WebLogic 部署中删除 javassist JAR 并使用它支持的版本可能值得一试。从 web.xml 中取出“prefer-web-inf-classes”标签,看看它是否可以与 WebLogic 喜欢的版本一起使用。

于 2009-04-21T23:47:37.080 回答
-1

我自己在这件事上浪费了几天时间。对我来说,问题是我的应用程序中有 2 个单独的数据服务模块。我认为 10.3 有一些问题。我不确定解决方案,但对我来说,一个解决方法是将我的两个数据服务模块组合成一个。BEA 似乎意识到了这个问题。希望下面的网址会有所帮助。参考 CR370788。 http://edocs.bea.com/wls/docs103/issues/known_resolved.html

于 2009-05-11T13:51:39.460 回答