我有一些使用JAXB API类的代码,这些类已作为Java 6/7/8中的JDK的一部分提供。当我用Java 9运行相同的代码时,在运行时得到错误,指示找不到JAXB类。
从Java 6开始,JAXB类就作为JDK的一部分提供了,那么为什么Java 9再也找不到这些类了呢?
我有一些使用JAXB API类的代码,这些类已作为Java 6/7/8中的JDK的一部分提供。当我用Java 9运行相同的代码时,在运行时得到错误,指示找不到JAXB类。
从Java 6开始,JAXB类就作为JDK的一部分提供了,那么为什么Java 9再也找不到这些类了呢?
当前回答
我跟踪了这个URL,下面的设置真的帮助了我。我在Macbook Pro中使用带有STS IDE的Java 10。这招很管用。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
其他回答
你可以使用——add-modules=java.xml。bind JVM选项将xml绑定模块添加到JVM运行时环境。
例如:java——add-modules=java.xml。绑定XmlTestClass
对于我来说,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后解决了这个问题。
希望能有所帮助。
在我的例子中(spring boot fat jar),我只是将以下内容添加到pom.xml。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.1</version>
</dependency>
我在App中遇到了同样的问题,在模块级别构建。gradle添加了视图绑定和数据绑定。
早些时候
viewBinding {
enabled = true
}
dataBinding {
enabled = true
}
解决
dataBinding {
enabled = true
}
在项目级构建中。Gradle使用如下
classpath 'com.android.tools.build:gradle:3.6.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.5.20"
在最近的JDK 9.0.1中,这些解决方案都不适合我。
我发现这个依赖列表对于一个正确的功能来说已经足够了,所以你不需要显式地指定——add-module(尽管它是在这些依赖的pom's中指定的)。你只需要指定以下依赖项列表:
<dependencies>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1.1</version>
</dependency>
</dependencies>