我正在将我们的团队从JAXB 1.x迁移到JAXB 2.1,这是JAVA1.6(rt.jar)的一部分。 一切都在游荡,直到它在运行时开始抱怨。
以下是导致问题的代码行。
String jaxbPackageName = "com.acme.retail.fuel.ifp";
context = JAXBContext.newInstance(jaxbPackageName, new JAXBClassLoader());
我已从项目及其构建路径中删除了所有JAXB 1.x库和资源。但问题仍然存在。以下是异常消息
SEVERE: JAXBContext creation failed for context path com.acme.retail.fuel.ifp
Throwable occurred: javax.xml.bind.JAXBException: Provider com.sun.xml.bind.ContextFactory_1_0_1 not found
- with linked exception:
[java.lang.ClassNotFoundException]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:158)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:260)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:383)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:348)
at com.acme.sureview.fuel.ifsf.application.IFPTranslator.<init>(IFPTranslator.java:167)
答案 0 :(得分:3)
弄清楚我的问题。因此,似乎还需要更改ContextFactory设置。 以前的价值是:
javax.xml.bind.context.factory=com.sun.xml.bind.ContextFactory_1_0_1
我把它改为:
javax.xml.bind.context.factory=com.sun.xml.internal.bind.v2.ContextFactory
这就照顾好了。