Išspręsta: javax.xml.bind neegzistuoja

Pradedant nuo įvado, klaida „javax.xml.bind neegzistuoja“ yra viena iš dažniausiai pasitaikančių problemų, su kuriomis susiduria kūrėjai pereidami nuo senesnių Java versijų prie naujesnių, ypač iš Java 8 į Java 9 arba naujesnę. Per šį perėjimą galite matyti šį pranešimą, nurodantį, kad trūksta tam tikro paketo, daugiausia todėl, kad javax.xml.bind buvo nebenaudojamas „Java 9“ versijoje ir pašalintas iš „Java 11“.

„javax.xml.bind“ naudojamas „Java Architecture for XML Binding“ (JAXB). Jis naudojamas konvertuoti „Java“ objektus į XML ir atvirkščiai. JAXB svarbos negalima pervertinti, nes jame pateikiami metodai, kaip atšaukti, sutvarkyti ir patvirtinti operacijas.

JDK problemos ir sprendimas

Pagrindinė šio klaidos pranešimo priežastis yra tai, kad išleidus Java SE 9 ir modulių sistemą, kai kurie paketai buvo pašalinti iš numatytojo klasės kelio, įskaitant "javax.xml.bind".

Jei norite greitai ir laikinai pataisyti, galite naudoti komandų eilutės parinktį „–add-modules“, jei paleidžiate programą iš komandinės eilutės. Jei naudojate Maven ir kitus panašius kūrimo įrankius, reikiamas priklausomybes galite įtraukti tiesiai į savo pom.xml arba build.gradle failą.

<!-- This command tells Java to add the 'java.xml.bind' module to your classpath -->
java --add-modules java.xml.bind YourApp

Tačiau norėdami rasti nuolatinį sprendimą, ypač jei planuojate perkelti projektus į Java 11 ir naujesnes versijas, turėsite rankiniu būdu įtraukti JAXB (javax.xml.bind) biblioteką į projekto klasės kelią.

Pridėkite JAXB priklausomybę, žingsnis po žingsnio

Norėdami įtraukti JAXB į savo projektą, pirmiausia turite pridėti „jaxb-api“ priklausomybę prie savo pom.xml arba build.gradle. JAXB diegimą saugykloje teikia „com.sun.xml.bind“.

<!-- In pom.xml, add the following dependencies -->
<dependencies>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-impl</artifactId>
        <version>2.3.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.xml.bind</groupId>
        <artifactId>jaxb-core</artifactId>
        <version>2.3.0.1</version>
    </dependency>
</dependencies>

Įtraukę šias priklausomybes į savo projektą, jūsų problema su „javax.xml.bind neegzistuoja“ turėtų būti išspręsta.

„Java 9“ ir kitų versijų pakeitimų poveikio supratimas

„Java 9“ pristatė naują modulių sistemą, kuri labai paveikė kūrėjų kūrimą ir valdymą savo programoms. Padarius tokius paketus kaip `javax.xml.bind` nepasiekiami pagal numatytuosius nustatymus, kūrėjai buvo priversti labiau suvokti savo projektų priklausomybes.

Šis pakeitimas, nors iš pradžių buvo gluminantis, paskatino gerą priklausomybės valdymo praktiką, todėl projektai tapo patikimesni ir lengviau prižiūrimi ilgainiui.

Tačiau šie pakeitimai reiškia, kad kūrėjai turi susipažinti su nauja modulių sistema ir aiškiau valdyti priklausomybes. Tačiau su tam tikra praktika problema, susijusi su trūkstamais moduliais „Java 9“ ir naujesnėje versijoje, tampa lengvai valdoma ir netgi antra.

Šis „Java“ modulių sistemos pritaikymas liudija besivystantį technologijų pobūdį ir kūrėjų gebėjimą prisitaikyti prie naujos praktikos pokyčių.

Susijusios naujienos:

Palikite komentarą