线程“main”中的异常java.lang.NoClassDefFoundError:org / jvnet / staxex / XMLStreamReaderEx

时间:2016-04-26 10:47:08

标签: java intellij-idea

我收到异常,但这不是代码问题,而是设置/依赖问题。

我有一台工作和家用电脑。项目文件通过OneDrive同步。两台计算机都运行Mac OSX 10.11.4,jdk1.8.0_66.jdk和IntelliJ IDEA 2016.1.1

代码适用于我的工作,但在家里我得到例外:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jvnet/staxex/XMLStreamReaderEx
    at com.sun.xml.stream.buffer.stax.StreamReaderBufferCreator.storeElementAndChildren(StreamReaderBufferCreator.java:195)
    at com.sun.xml.stream.buffer.stax.StreamReaderBufferCreator.storeDocumentAndChildren(StreamReaderBufferCreator.java:179)
    at com.sun.xml.stream.buffer.stax.StreamReaderBufferCreator.store(StreamReaderBufferCreator.java:160)
    at com.sun.xml.stream.buffer.stax.StreamReaderBufferCreator.create(StreamReaderBufferCreator.java:103)
    at com.sun.xml.stream.buffer.MutableXMLStreamBuffer.createFromXMLStreamReader(MutableXMLStreamBuffer.java:134)
    at com.sun.xml.stream.buffer.XMLStreamBuffer.createNewBufferFromXMLStreamReader(XMLStreamBuffer.java:419)
    at com.sun.xml.ws.api.addressing.WSEndpointReference.<init>(WSEndpointReference.java:183)
    at com.sun.xml.ws.api.addressing.WSEndpointReference.<init>(WSEndpointReference.java:175)
    at com.sun.xml.ws.api.addressing.AddressingVersion.<init>(AddressingVersion.java:443)
    at com.sun.xml.ws.api.addressing.AddressingVersion.<init>(AddressingVersion.java:72)
    at com.sun.xml.ws.api.addressing.AddressingVersion$1.<init>(AddressingVersion.java:74)
    at com.sun.xml.ws.api.addressing.AddressingVersion.<clinit>(AddressingVersion.java:74)
    at com.sun.xml.ws.security.addressing.policy.WsawAddressingPrefixMapper.<clinit>(WsawAddressingPrefixMapper.java:63)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
......

我的项目库/提供的stax2-api.jar和stax-api.jar。我有VPN工作,看看项目设置,看不出任何差异。

我如何找出两台机器之间的区别,以使代码在家工作?

4 个答案:

答案 0 :(得分:0)

我不知道出了什么问题,但重新安装较新版本的JDK解决了这个问题。

答案 1 :(得分:0)

这是因为存在冲突的jar文件具有相同的类但实现不同(考虑不同的版本)。尝试逐个删除所有jar,直到您停止接收此错误(目标XML解析器库 - jaxws-rt ....等)。

答案 2 :(得分:0)

就我而言,在几乎完全相同的情况下(尽管在Windows和Netbeans 8.1上),罪魁祸首最终是我正在使用的JDK平台将Metro / WSIT JAX-WS实现放在%JAVA_HOME%\ jre中的事实\ lib \ endorsed文件夹,而我尝试运行的项目正在使用Apache CXF JAX-WS实现,因此,即使我在JAR中包括了那些依赖关系,诸如STAX之类的某些依赖关系也被该支持文件夹中的库所覆盖。 / p>

我能够在调试和检查错误之前的类加载过程的同时,跟踪向JVM提供的-verbose:class选项。欢呼。

答案 3 :(得分:0)

我也遇到了同样的问题,上面的帖子至少帮助我解决了错误并理解了这个错误。

经过一些分析。我刚刚升级了Jaws-rt Jar版本,解决了我的问题。

当我在使用的maven依赖项下面使用Jaws-rt jar时。

   <dependency>
        <groupId>com.sun.xml.ws</groupId>
        <artifactId>jaxws-rt</artifactId>
        <version>2.3.2</version>
    </dependency>