【发布时间】:2020-09-19 15:56:38
【问题描述】:
我正在尝试在 OpenJ9 (JDK14) 上加载 Hibernate XML 配置,但由于 JAXB 不再是 JDK 的一部分,我收到此错误:
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.ValidationEventHandler
我尝试遵循以下一些答案:How to resolve java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException in Java 9,但似乎没有人在 OpenJ9 上运行,并且在尝试包含任何依赖项时出现以下错误:
Caused by: javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
- with linked exception:
[java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory]
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:278)
at javax.xml.bind.ContextFinder.find(ContextFinder.java:421)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:721)
at javax.xml.bind.JAXBContext.newInstance(JAXBContext.java:662)
at org.hibernate.boot.cfgxml.internal.JaxbCfgProcessor.unmarshal(JaxbCfgProcessor.java:122)
... 5 more
Caused by: java.lang.ClassNotFoundException: com.sun.xml.internal.bind.v2.ContextFactory
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:788)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1081)
at javax.xml.bind.ServiceLoaderUtil.nullSafeLoadClass(ServiceLoaderUtil.java:122)
at javax.xml.bind.ServiceLoaderUtil.safeLoadClass(ServiceLoaderUtil.java:155)
at javax.xml.bind.ContextFinder.newInstance(ContextFinder.java:276)
... 9 more
【问题讨论】:
-
你尝试使用哪个休眠版本?
-
我使用的是休眠 5.3.7.Final
-
链接问题中的哪个解决方案正在使用?使用 maven 指定 jaxb 依赖项的“适当的长期解决方案:(JDK 9 及更高版本)”?你能分享你从有问题的运行中获得的命令行吗?
-
我尝试了所有建议的不同解决方案,包括 JAXB 模块
标签: java xml hibernate hibernate-mapping openj9