java.lang.NoSuchFieldError: REFLECTION

我的錯誤信息如下:

Caused by: java.lang.NoSuchFieldError: REFLECTION

at com.sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.java:43)

at com.sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.java:344)

at com.sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.java:216)

at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:76)

at com.sun.xml.bind.v2.ContextFactory.createContext(ContextFactory.java:55)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:247)

at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:234)

at javax.xml.bind.ContextFinder.find(ContextFinder.java:441)

at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:641)

at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:584)

解決方法:

首先用 mvn dependency:tree ,查看依賴包的樹

java.lang.NoSuchFieldError: REFLECTION

找這個關鍵字,很明顯有主版本號不一致,改成一致的高版本,jaxb2.3以下的版本需要添加如下四個jar包:

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.2</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.2</version>
</dependency>

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2</version>
</dependency>

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

2.3版本或以上只需要添加jaxws-rt即可,該jar包包含上面4個jar:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章