ClassNotFoundException:com.sun.xml.bind.v2.ContextFactory


項目中引入hive-jdbc-1.2.1-standalone.jar包之后,報錯如下:

 

Caused by: javax.xml.bind.JAXBException: Provider com.sun.xml.bind.v2.ContextFactory not found
 - with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:151)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:299)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:372)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:337)
at org.apache.cxf.wsdl.JAXBExtensionHelper.createJAXBContext(JAXBExtensionHelper.java:196)
at org.apache.cxf.wsdl.JAXBExtensionHelper.getJAXBContext(JAXBExtensionHelper.java:183)
... 65 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.bind.v2.ContextFactory
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:116)
... 70 more

 

網上找了各種解決辦法均不對症,最終跟代碼發現在執行如下代碼時會異常:

JAXBContext.newInstance(...)

一步步跟進內部代碼,找到COntextFinder類中的find方法,可以看到一路在search javax.xml.bind.JAXBContext,大概查找路徑如下:

1、從jaxb.properties中查找

2、從system property中查找

3、OSGi search

4、search META-INF services

5、最后,以上全找不到,則使用默認的com.sun.xml.internal.bind.v2.ContextFactory

 

在打斷點的過程,發現第四步時,在resourceURL中看到了hive-jdbc-1.2.1-standalone.jar的路徑,於是看了下hive-jdbc-1.2.1-standalone.jar包的META-INF的service路徑下,確實有關於javax.xml.bind.JAXBContext的配置

原因找到了,解決辦法很簡單:

要么增加jar包,讓程序能找到這個類com.sun.xml.bind.v2.ContextFactory;要么使用默認的。

我的簡單粗暴的辦法是,把hive-jdbc-1.2.1-standalone.jar包META-INF的service下javax.xml.bind.JAXBContext的配置刪掉。替換jar包重啟服務就解決報錯問題了

 

 

 

 

未解決我問題的文章,供參考:

http://blog.sina.com.cn/s/blog_6f282fba0101iqn7.html

https://blog.csdn.net/ninetowns2008/article/details/40741831

https://blog.csdn.net/hadues/article/details/79188793


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM