代码之家  ›  专栏  ›  技术社区  ›  Boris

Java 11包javax .xML.BIN不存在[复制]

  •  23
  • Boris  · 技术社区  · 6 年前

    我试图将XML数据反序列化到Java内容树中。 JAXB ,在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();
    }
    

    当我用 爪哇8 很好,但是用 爪哇11 由于编译错误而失败:

    package javax.xml.bind does not exist
    

    如何解决此问题?

    1 回复  |  直到 6 年前
        1
  •  45
  •   Naman    6 年前

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

    java.xml.bind (JAXB) - REMOVED
    
    • Java 8 - OK
    • Java 9 -弃用
    • Java 10 -弃用
    • Java 11 远离的

    JEP 320 更多信息。

    您可以通过使用JavaEE技术的备用版本来修复这个问题。只需添加包含所需类的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>