Das Paket javax.xml.bind existiert in Java 11 nicht
Bei Verwendung von JAXB zum Parsen und Authentifizieren von XML-Daten:
<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>
Basierend auf Java 8 läuft dieser Code einwandfrei, aber in Java 11 tritt der folgende Kompilierungsfehler auf:
package javax.xml.bind does not exist
Workaround
Den Versionshinweisen zufolge entfernte Java 11 Java EE-Module, einschließlich javax.xml.bind (JAXB), was dieses Problem verursachte.
Um dieses Problem zu beheben, müssen Sie eine alternative Version der Java EE-Technologie verwenden. Fügen Sie einfach eine Maven-Abhängigkeit hinzu, die die erforderlichen Klassen enthält:
<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 Update ( 2020 März 2020)
Sie können jetzt das alte JAXB-Modul durch Jakarta XML Binding in Jakarta EE 8 ersetzen:
<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 Update (November 2020) Monat)
Verwenden Sie die neueste Version von 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>
Hinweis: Mit Jakarta EE 9 wird der neue API-Paket-Namespace jakarta übernommen. xml.bind.*, bitte aktualisieren Sie die Importanweisung:
<code class="java">javax.xml.bind -> jakarta.xml.bind</code>
Jakarta EE 10 Update (Juni 2022)
Verwenden Sie die neueste Version von Jakarta XML Binding 4.0 (erfordert Java SE 11 oder höher):
<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>
Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „javax.xml.bind existiert nicht“ in Java 11 bei Verwendung von JAXB?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!