programing

Java 11 패키지 javax.xml.bind가 없습니다.

prostudy 2022. 6. 20. 20:58
반응형

Java 11 패키지 javax.xml.bind가 없습니다.

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

문제를 해결하려면 어떻게 해야 하나요?

릴리스 노트에 따르면 Java 11은 Java EE 모듈을 제거했습니다.

java.xml.bind (JAXB) - REMOVED
  • Java 8 - OK
  • 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>

자카르타 EE 8 업데이트(2020년 3월)

기존 JAXB 모듈을 사용하는 대신 자카르타 EE 8의 자카르타 XML 바인딩을 사용하여 문제를 해결할 수 있습니다.

<dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>2.3.3</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>2.3.3</version>
  <scope>runtime</scope>
</dependency>

자카르타 EE 9 업데이트(2020년 11월)

자카르타 XML 바인딩 3.0의 최신 릴리스 사용:

<dependency>
  <groupId>jakarta.xml.bind</groupId>
  <artifactId>jakarta.xml.bind-api</artifactId>
  <version>3.0.0</version>
</dependency>
<dependency>
  <groupId>com.sun.xml.bind</groupId>
  <artifactId>jaxb-impl</artifactId>
  <version>3.0.0</version>
  <scope>runtime</scope>
</dependency>

주의: 자카르타 EE 9는 새로운 API 패키지 네임스페이스를 채택하고 있습니다.jakarta.xml.bind.*import 스테이트먼트를 갱신합니다.

javax.xml.bind -> jakarta.xml.bind

언급URL : https://stackoverflow.com/questions/52502189/java-11-package-javax-xml-bind-does-not-exist

반응형