我正在通过Apache cxf创建一个Web客户端来调用一个其余的URL, 当我通过主类测试我的代码时,它给了我正确的 响应,但当我部署它是8.5服务器时,它给出错误。
[10/1/15 10:32:45:461 CDT] 000000ce SystemErr R Caused by: java.lang.IncompatibleClassChangeError: org.apache.neethi.AssertionBuilderFactory
[10/1/15 10:32:45:462 CDT] 000000ce SystemErr R at java.lang.ClassLoader.defineClassImpl(Native Method)
[10/1/15 10:32:45:463 CDT] 000000ce SystemErr R at java.lang.ClassLoader.defineClass(ClassLoader.java:331)
[10/1/15 10:32:45:463 CDT] 000000ce SystemErr R at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:155)
[10/1/15 10:32:45:463 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:856)
[10/1/15 10:32:45:464 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:764)
[10/1/15 10:32:45:464 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:587)
[10/1/15 10:32:45:465 CDT] 000000ce SystemErr R at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
[10/1/15 10:32:45:465 CDT] 000000ce SystemErr R at java.lang.ClassLoader.defineClassImpl(Native Method)
[10/1/15 10:32:45:466 CDT] 000000ce SystemErr R at java.lang.ClassLoader.defineClass(ClassLoader.java:331)
[10/1/15 10:32:45:466 CDT] 000000ce SystemErr R at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:155)
[10/1/15 10:32:45:467 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:856)
[10/1/15 10:32:45:467 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader.localFindClass(CompoundClassLoader.java:764)
[10/1/15 10:32:45:468 CDT] 000000ce SystemErr R at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:587)
[10/1/15 10:32:45:469 CDT] 000000ce SystemErr R at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
[10/1/15 10:32:45:469 CDT] 000000ce SystemErr R at org.apache.cxf.bus.extension.Extension.tryClass(Extension.java:164)
我用neethi 3.0.3和apache cxf bundle 2.7.9更新了我的POM。 但是仍然会出现错误,我还能在这做什么呢?,谢谢!!
答案 0 :(得分:0)
我认为您已将某些内容打包到已存在于服务器上的存档中。
只是不要将属于Java EE的技术的任何实现或API打包到您的存档(WAR / EAR)中。
Google for" Java EE full profile"和#34; Java EE网站简介"它应该为您提供和概述哪些技术是Java EE配置文件的一部分,因此在Java EE兼容服务器中必须必须。 JAX-RS(用于RESTful Web服务的Java API)是完整配置文件的一部分。
您可以使用<scope>provided</scope>
甚至更好<scope>test</scope>
来防止打包任何依赖项。
我说测试更好,因为这样就可以防止意外编程实现。
由于您自然需要针对API进行编程,因此您将API定义为provided
:
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<scope>provided</scope>
<type>pom</type>
</dependency>
我正在给你这个jboss的东西,因为这是唯一一个附带源代码和javadoc的Java EE API集合 - 为了你的IDE观看乐趣。