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 控制台应用程序被覆盖