我有一些使用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再也找不到这些类了呢?
当前回答
这对我很管用。只添加jaxb-api是不够的。
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>${jaxb-api.version}</version>
</dependency>
其他回答
在将我的项目升级到Java 11之后,我也有类似的问题,然后修复它的是升级到spring boot 2.1.1,显然它支持Java 11,这有帮助
您可以使用这个依赖项
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
对我来说,这是一个简单的解决方案(Mac用户)
run in terminal——> alias j8="export JAVA_HOME= ' /usr/libexec/ JAVA_HOME -v 1.8 '; 然后执行——> j8 就是这样!!(现在运行你的MVN命令)
或者你可以在你的.bash_profile中设置
如果你使用的是上面提到的JDK 8,请遵循以下步骤:
添加javax.xml.bind依赖项
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
清洁maven 安装maven
这是因为如果您使用的是JDK 9或更高版本,只需将此添加到您的pom
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>