【发布时间】:2019-12-24 14:59:55
【问题描述】:
我在使用 docx4j 时遇到了一个错误,并且可能找到了它发生的原因:
javax.xml.bind.JAXBException: JAXB: Can't instantiate JAXB Reference Implementation
- with linked exception:
[java.lang.ClassNotFoundException: org.docx4j.jaxb.ri.NamespacePrefixMapper]
在我的项目中,我使用 docx4j-JAXB-Internal v.8.1.2 + docx4j-export-fo v.8.1.2(来自 Maven)
我也使用 Hibernate (hibernate-core-5.4.2) 正如您在他们的 POM 中看到的,依赖项包含:
- javax.xml.bind -> jaxb-api v.2.3.1
- org.glassfish.jaxb -> jaxb-runtime v.2.3.1
所以,当我来到NamespacePrefixMapperUtils::getPrefixMapper,
它试图找到“com.sun.xml.internal.bind.v2.runtime.JAXBContextImpl”,
- 指 docx4j-JAXB-Internal,
但我得到“com.sun.xml.bind.v2.runtime.JAXBContextImpl”
- 指休眠 -> glassfish -> jaxb-runtime
我认为存在依赖冲突,我该如何解决? 谢谢
【问题讨论】: