JDK15 上的 JAXB:需要哪些罐子?
JAXB on JDK15: which jars are needed?
我在 JDK15 的 intelliJIDEA 中工作,没有任何 Gradle、Maven 或其他。
是的,我们都知道自 JDK11.
以来,JAXB 已从 JDK 中删除
所以我尝试简单地将一些库作为 jar 文件添加到项目中:
jaxb-runtime-3.0.0
jaxb-impl-3.0.0
jaxb-core-3.0.0
jaxb-api-2.4.0-b180830.03592
xmlbeans-2.6.02
activation-1.0.22
不过,我得到的只是:
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
这一行:
jaxbContext = JAXBContext.newInstance(Hamster.class);
有线索吗?
您混淆了不兼容的库版本:jaxb-impl-3.0.0.jar
和 jaxb-runtime-3.0.0.jar
都不是 JAXB API 2.4.0 的实现。 Java EE 8 规范(如 JAXB 2.4.0)和 Jakarta EE 9 规范(如 JAXB 3.0)之间发生了重大变化:基本上包命名空间 javax.
已替换为 jakarta.*
.
因此,为了使用 JAXB 3.0,您需要:
- 或者
jaxb-impl-3.0.0.jar
from com.sun.xml.bind
and its dependencies or jaxb-runtime-3.0.0.jar
from org.glassfish.jaxb
and its dependencies. The former has less dependencies (many minor dependencies were condensed into jaxb-core-3.0.0.jar
; you shouldn't mistake it with the org.glassfish.jaxb
artifact of the same name),
- 将代码中的所有
javax.xml.bind
替换为 jakarta.xml.bind
。
我在 JDK15 的 intelliJIDEA 中工作,没有任何 Gradle、Maven 或其他。
是的,我们都知道自 JDK11.
以来,JAXB 已从 JDK 中删除
所以我尝试简单地将一些库作为 jar 文件添加到项目中:
jaxb-runtime-3.0.0
jaxb-impl-3.0.0
jaxb-core-3.0.0
jaxb-api-2.4.0-b180830.03592
xmlbeans-2.6.02
activation-1.0.22
不过,我得到的只是:
javax.xml.bind.JAXBException: Implementation of JAXB-API has not been found on module path or classpath.
这一行:
jaxbContext = JAXBContext.newInstance(Hamster.class);
有线索吗?
您混淆了不兼容的库版本:jaxb-impl-3.0.0.jar
和 jaxb-runtime-3.0.0.jar
都不是 JAXB API 2.4.0 的实现。 Java EE 8 规范(如 JAXB 2.4.0)和 Jakarta EE 9 规范(如 JAXB 3.0)之间发生了重大变化:基本上包命名空间 javax.
已替换为 jakarta.*
.
因此,为了使用 JAXB 3.0,您需要:
- 或者
jaxb-impl-3.0.0.jar
fromcom.sun.xml.bind
and its dependencies orjaxb-runtime-3.0.0.jar
fromorg.glassfish.jaxb
and its dependencies. The former has less dependencies (many minor dependencies were condensed intojaxb-core-3.0.0.jar
; you shouldn't mistake it with theorg.glassfish.jaxb
artifact of the same name), - 将代码中的所有
javax.xml.bind
替换为jakarta.xml.bind
。