Worklight javax/xml/名称空间/QName

Posted

技术标签:

【中文标题】Worklight javax/xml/名称空间/QName【英文标题】:Worklight javax/xml/name space/QName 【发布时间】:2014-09-14 10:48:25 【问题描述】:

IBM Worklight 6.2/Liberty 8.5.5.1

对于Webservice的自定义实现,

    已编写 Java 代码,并将 jaxrpc.jar 包含在 worklight 项目的服务器 lib 文件夹中

    在 Eclipse 中进行测试时,它工作正常。

    当构建移动到测试环境时,服务器抛出了以下错误。

Invocation of init method failed; nested exception is java.lang.LinkageError: 
loaderconstraint violation: loader (instance of com/ibm/ws/classloading/internal
/ParentLastClassLoader) previously initiated loading for a different type with name
"javax/xml/namespace/QName"

我了解存在冲突。所以我从 server/lib 文件夹中的 jaxrpc.jar 中删除了 QName.class。但是我可以在测试环境中部署和运行它而不会出错。

因为这不是一个解决方案,所以我尝试从 server/lib 中删除 jaxrpc.jar,然后编译器在 .java 中抛出异常

The type javax.xml.rpc.Service cannot be resolved. It is indirectly referenced from required .class files

如果我仍然继续构建,则在启动服务器时没有错误但在运行时出现类未找到异常。

如何利用 Liberty 库或者是任何替代方法来解决。

【问题讨论】:

【参考方案1】:

Liberty 不支持 JAX-RPC。仅支持 JAX-RS。通过引用 jaxrpc.jar 文件,您会遇到类冲突,因为 JAX-RS 功能是 Worklight 所需的 REST 功能的依赖项。 最好的方法是使用 JAX-RS 来实现您的 Web 服务。其他解决方案是您已测试从 jaxrpc.jar 文件中删除冲突的类。

【讨论】:

以上是关于Worklight javax/xml/名称空间/QName的主要内容,如果未能解决你的问题,请参考以下文章

Worklight 6.2 wlapp 部署给出错误 java 堆空间

IBM Worklight 5.0.5.2 - 如何更改 Android 包名称

Worklight Flight Ticket Sample App 的程序包名称是啥?

当项目名称相同但上下文不同时,Worklight 控制台应用程序被覆盖

Java 10 中的 javax.xml.stream 和 javax.xml.transform.stream

使用命名空间和前缀的 JAXB 解组