Java 11에는 javax.xml.bind 패키지가 없습니다
JAXB를 사용하여 XML 데이터를 구문 분석하고 인증하는 경우:
<code class="java">JAXBContext context = JAXBContext.newInstance("com.acme.foo"); Unmarshaller unmarshaller = context.createUnmarshaller(); unmarshaller.setSchema(schema); FooObject fooObj = (FooObject) unmarshaller.unmarshal(new File("foo.xml"));</code>
Java 8을 기반으로 이 코드는 정상적으로 실행되지만 Java 11에서는 다음과 같은 컴파일 오류가 발생합니다.
package javax.xml.bind does not exist
해결 방법
릴리스 노트에 따르면 Java 11에서는 이 문제의 원인이 되는 javax.xml.bind(JAXB)를 포함한 Java EE 모듈을 제거했습니다.
이 문제를 해결하려면 Java EE 기술의 대체 버전을 사용해야 합니다. 필요한 클래스가 포함된 Maven 종속성을 추가하면 됩니다.
<code class="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></code>
Jakarta EE 8 업데이트( 2020년 3월)
이제 이전 JAXB 모듈을 Jakarta EE 8의 Jakarta XML 바인딩으로 교체할 수 있습니다.
<code class="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></code>
Jakarta EE 9 업데이트(2020년 11월) 월)
최신 버전의 Jakarta XML Binding 3.0 사용:
<code class="xml"><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></code>
참고: Jakarta EE 9에서는 새로운 API 패키지 네임스페이스 jakarta를 채택합니다. xml.bind.*, import 문을 업데이트하세요.
<code class="java">javax.xml.bind -> jakarta.xml.bind</code>
Jakarta EE 10 업데이트(2022년 6월)
최신 버전의 Jakarta XML Binding 4.0을 사용하세요. (Java SE 11 이상이 필요함):
<code class="xml"><dependency> <groupId>jakarta.xml.bind</groupId> <artifactId>jakarta.xml.bind-api</artifactId> <version>4.0.0</version> </dependency> <dependency> <groupId>com.sun.xml.bind</groupId> <artifactId>jaxb-impl</artifactId> <version>4.0.0</version> <scope>runtime</scope> </dependency></code>
위 내용은 JAXB를 사용할 때 Java 11에서 "javax.xml.bind가 존재하지 않습니다" 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!