我有一些使用JAXB API类的代码,这些类已作为Java 6/7/8中的JDK的一部分提供。当我用Java 9运行相同的代码时,在运行时得到错误,指示找不到JAXB类。

从Java 6开始,JAXB类就作为JDK的一部分提供了,那么为什么Java 9再也找不到这些类了呢?


当前回答

对于我来说,Eclipse 2020-12(4.18.0)正在使用inbuild (org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.1.v20201027-0507\jre)

在安装的JREs(这是我想要的)中将java更新到1.8后解决了这个问题。

希望能有所帮助。

其他回答

我还碰到了ClassNotFoundException:javax.xml.bind。DatatypeConverter使用Java 11和

<dependency>
    <groupId>io.jsonwebtoken</groupId>
    <artifactId>jjwt</artifactId>
    <version>0.9.1</version>
</dependency>

我尝试了添加javax.xml的所有方法。绑定:jaxb-api或spring boot jakarta.xml。bind-api . .我发现了一个关于jjwt 0.10.0版本修复的提示。但最重要的是,JJWT包现在是分开的!

因此,查看这个参考:https://github.com/jwtk/jjwt/issues/510

很简单,如果你使用

Java11和 jjwt 0.9。x和 你将面临ClassNotFoundException:javax.xml.bind。DatatypeConverter问题,

JJWT 0.11版。X,但是使用分离的包:https://github.com/jwtk/jjwt#install

你的maven找不到更高版本的jjwt依赖,因为他们把包分开了。

欢呼。

关于这个异常,我想给出一个简单易行的解决方案,只是将android studio版本降低到4.1.1或更低。确保你没有android工作室北极狐(2020.3.1)版本,因为最新版本不支持android的旧项目。

我在使用Spring Boot 2.0.5时遇到了同样的问题。在Java 11上发布。

仅仅添加javax.xml.bind:jaxb-api:2.3.0并不能解决这个问题。我还必须将Spring Boot更新到最新的Milestone 2.1.0。M2,所以我认为这将在下一次正式发布中修复。

你可以使用——add-modules=java.xml。bind JVM选项将xml绑定模块添加到JVM运行时环境。

例如:java——add-modules=java.xml。绑定XmlTestClass

您需要向maven添加jaxb依赖项。glassfish实现版本2.3.2与新的jakarta EE jaxb api版本2.3.2完全兼容。

<!-- API -->
<dependency>
    <groupId>jakarta.xml.bind</groupId>
    <artifactId>jakarta.xml.bind-api</artifactId>
    <version>2.3.2</version>
</dependency>

<!-- Runtime -->
<dependency>
    <groupId>org.glassfish.jaxb</groupId>
    <artifactId>jaxb-runtime</artifactId>
    <version>2.3.2</version>
</dependency>