2015年12月25日   码农之路   11,409 次浏览
javacTask: 目标发行版 1.5 与默认的源发行版 1.7 冲突 Exception in thread "main" java.lang.IllegalStateException: Unable to create JAXBContext for generated packages: Provider com.sun.xml.bind.v2.ContextFactory could not be instantiated: javax.xml.bind.JAXBException: "com.bd.service" doesnt contain ObjectFactory.class or jaxb.index |
今天写CXF动态客户端(JaxWsDynamicClientFactory)时出现了上面这个错误,如果按照字面理解是jdk的版本不对,各种百度也是说jdk版本不对,可是我从1.5换到1.6再换到1.7,然并卵……
于是改变搜索关键词:Unable to create JAXBContext,javax.xml.bind.JAXBException,直接搜索这个异常,最后在http://stackoverflow.com/questions/7232331/unable-to-create-jaxbcontext-creating-my-wsdl发现了这么一段话:
My Maven project built just fine with JDK 6, but when I switched to be using JDK 1.7 as my default, the build broke. Regarding the version. This bug is listed at https://java.net/jira/browse/JAXB-814. It's fixed for versions 2.2.4u2, 2.2.5, 2.3 I have resolved this issue by fixing the jaxb-impl version from 2.1.9 to 2.2.6 and it works fine now. <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>2.2.6</version> </dependency> |
大意就是com.sun.xml.bind这个组件的低版本在jdk1.7有个bug,需要升级到最新版本,而这个组件在CXF的依赖组件中可以找到,看到我的版本才1.4,于是果断把整个CXF升级到2.7.18(2.X版本中最高的,com.sun.xml.bind对应的版本为2.2.6),重新编译(jdk1.7),代码通过。
总结:
当出现javacTask: 目标发行版 1.5 与默认的源发行版 1.7 冲突的时候,需要分析整个错误堆栈,找到错误的源头。尤其用maven来管理的时候,会产生很多依赖包表面是看不到的,需要跟踪好几个pom才能发现。
>>> Hello World <<<
这篇内容是否帮助到你了呢?
如果你有任何疑问或有建议留给其他朋友,都可以给我留言。
目前有有一条留言:
嘻嘻,问题解决!!