首页 文章

Java 11包javax.xml.bind不存在[重复]

提问于
浏览
6

这个问题在这里已有答案:

我正在尝试使用JAXB将XML数据反序列化为Java内容树,在解组时验证XML数据:

try {
  JAXBContext context = JAXBContext.newInstance("com.acme.foo");
  Unmarshaller unmarshaller = context.createUnmarshaller();
  unmarshaller.setSchema(schema);
  FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));
} catch (UnmarshalException ex) {
  ex.printStackTrace();
} catch (JAXBException ex) {
  ex.printStackTrace();
}

当我使用 Java 8 构建项目时没关系,但使用 Java 11 构建它失败并出现编译错误:

package javax.xml.bind does not exist

我该如何解决这个问题?

1 回答

  • 15

    根据release-notes,Java 11删除了Java EE模块:

    java.xml.bind (JAXB) - REMOVED
    
    • Java 8 - 好的

    • Java 9 - 已弃用

    • Java 10 - 已弃用

    • Java 11 - 删除

    有关详细信息,请参阅JEP 320 .

    您可以使用备用版本的Java EE技术来解决此问题 . 只需添加包含所需类的Maven依赖项:

    <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>
    

相关问题