1

我正在尝试将我的应用程序从 Liberty 18.0.0.1 升级到 18.0.0.2,但它们现在都失败了:

 java.lang.NoClassDefFoundError: javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter
 ...

堆栈跟踪

问题似乎出在 ldapRegistry-3.0 上——一旦启用该功能,所有 jax-rs 请求都会失败。删除 ldapRegistry 后,代码可以正常工作,但是我的应用程序需要此功能...

我什至用单个 RestEndpoint /v1/api/employee 构建了一个小示例来演示它:示例项目 服务器配置

这是一个错误,我可以在某处报告吗?还是我在这里做错了什么?

这是服务器转储

谢谢

4

1 回答 1

1

这似乎是由微妙的拆分包类加载冲突引起的。我能够使用 Liberty 18.0.0.2 重现此问题,并且底层异常如下所示:

java.lang.NoSuchMethodException: javax.xml.bind.annotation.W3CDomHandler.createUnmarshaller(javax.xml.bind.ValidationEventHandler)

在这种情况下,它似乎javax.xml.bind.annotation.W3CDomHandler是从类加载器 A 加载的,并且javax.xml.bind.ValidationEventHandler被加载了两次——一次从类加载器 A,一次从类加载器 B。我们在这里得到的错误是由 JVM 寻找javax.xml.bind.annotation.W3CDomHandler.createUnmarshaller(javax.xml.bind.ValidationEventHandler)两个类来自类加载器 A 的位置引起的,但是相反它寻找来自类加载器 B的createUnmarshaller(ValidationEventHandler)方法。ValidationEventHandler

此错误将在 Liberty 的下一版本 (18.0.0.3) 中解决

于 2018-08-03T15:15:04.990 回答