javax.xml.bind.annotation在jdk11中已被移除

问题来源

做一个xml文件的映射,用的是jdk11的版本。

给类加上注解:@XmlRootElement(name = "d")

导入相应的类名:import javax.xml.bind.annotation.XmlRootElement;

直接报错:javax.xml.bind cannot resolve......

问题解决

方式 1

将jdk的版本退回到jdk8,因为jdk8还支持自带javax.xml.bind.annotation包。

方式 2

手动引入相关的jar包。

如果用的项目构建工具是Gradle,在build.gradle文件中手动增加依赖,进行引入。

dependencies {
	//由于jdk11删除了java.xml.bind这个包,所以这里要手动重新引入
	implementation 'javax.xml.bind:jaxb-api:2.3.0'
	implementation 'com.sun.xml.bind:jaxb-core:2.3.0'
	implementation 'com.sun.xml.bind:jaxb-impl:2.3.0'
	implementation 'javax.activation:activation:1.1.1'
}

如果用的项目构建工具是Maven,则在pom.xml中增加依赖。

<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-core</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>javax.activation</groupId>
  <artifactId>activation</artifactId>
  <version>1.1.1</version>
</dependency>

关于javax.xml.bind的jdk版本支持情况:

  • jdk8:支持
  • jdk9:弃用
  • jdk10:弃用
  • jdk11:移除

你可能感兴趣的:(踩坑集,xml,maven,java)