java.lang.NoClassDefFoundError:javax.persistence.AttributeConverter

时间:2017-03-23 11:19:02

标签: hibernate jpa websphere

我有一个带

的EAR文件
  1. 类加载器设置为PARENT_LAST和
  2. hibernate-jpa-2.1-api-1.0.0.Final.jar与EAR本身打包在一起。
  3. 在部署到Websphere BPM 8.5.5时,我得到了NoClassDefFoundError。堆栈跟踪如下所示

    Dec

    是否有人提前遇到过这个问题或修过它?

1 个答案:

答案 0 :(得分:1)

嵌套的ClassNotFoundException的堆栈会更加确定(它应该包括用于失败的类加载的实际加载器),但Billy的评论几乎肯定是在正确的轨道上。您已经将一些依赖于JPA API的自定义类添加到服务器的JVM类路径(或者可能添加到引导类路径或java.ext.dirs中的目录,如java / jre / lib / ext;但效果会相同。

将某些东西放在JVM类路径中会导致它由Java应用程序加载器加载,该加载器是环境中所有其他类加载器的父级,包括获取大部分WebSphere运行时的OSGi加载器。因此,它无法“看到”任何WebSphere类,包括Java EE API等核心内容。

自定义类基本上不属于WebSphere服务器上的JVM类路径。共享库是通常的建议(假设有一些原因你不能把它留在你的应用程序中),并且在服务器上有一个扩展类加载器,由几个目录填充,如WAS_HOME / lib / ext,可以如果你有自定义安全模块之类的东西需要在应用程序范围之外的服务器上显示。