Ratkaistu: javax.xml.bind ei ole olemassa

Esittelystรค alkaen virhe "javax.xml.bind ei ole olemassa" on yksi yleisimmistรค ongelmista, joita kehittรคjรคt kohtaavat siirtyessรครคn vanhemmista Java-versioista uudempiin, erityisesti Java 8:sta Java 9:รครคn tai uudempaan. Tรคmรคn siirtymรคn aikana saatat kohdata tรคmรคn viestin, joka osoittaa, ettรค tietty paketti puuttuu, pรครคasiassa siksi, ettรค javax.xml.bind on vanhentunut Java 9:ssรค ja poistettu Java 11:stรค.

"javax.xml.bind" on Java Architecture for XML Binding (JAXB) -arkkitehtuuri. Sitรค kรคytetรครคn Java-objektien muuntamiseen XML-muotoon ja pรคinvastoin. JAXB:n merkitystรค ei voi liioitella, sillรค se tarjoaa menetelmiรค operaatioiden purkamiseen, jรคrjestรคmiseen ja validointiin.

JDK:n ongelmat ja ratkaisut

Tรคmรคn virheilmoituksen ensisijainen syy on, ettรค Java SE 9:n ja moduulijรคrjestelmรคn julkaisun myรถtรค jotkin paketit poistettiin oletusluokkapolulta, mukaan lukien "javax.xml.bind".

Nopeaa ja vรคliaikaista korjausta varten voit kรคyttรครค komentorivivaihtoehtoa "โ€“add-modules", jos kรคytรคt ohjelmaa komentoriviltรค. Mavenille ja muille vastaaville koontityรถkaluille voit lisรคtรค tarvittavat riippuvuudet suoraan pom.xml- tai build.gradle-tiedostoosi.

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

Pysyvรคmmรคn ratkaisun saamiseksi, varsinkin jos aiot siirtรครค projektisi Java 11:een tai uudempaan, sinun on sisรคllytettรคvรค JAXB-kirjasto (javax.xml.bind) manuaalisesti projektisi luokkapolkuun.

JAXB-riippuvuuden lisรครคminen askel askeleelta

Jos haluat sisรคllyttรครค JAXB:n projektiisi, sinun on ensin lisรคttรคvรค jaxb-api-riippuvuus pom.xml- tai build.gradle-tiedostoon. JAXB:n toteutuksen arkistossa tarjoaa `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>

Kun olet sisรคllyttรคnyt nรคmรค riippuvuudet projektiisi, ongelmasi "javax.xml.bind ei ole olemassa" pitรคisi ratkaista.

Java 9:n ja sen jรคlkeisten muutosten vaikutuksen ymmรคrtรคminen

Java 9 esitteli uuden moduulijรคrjestelmรคn, joka vaikutti merkittรคvรคsti siihen, miten kehittรคjรคt rakentavat ja hallitsevat sovelluksiaan. Kun paketit, kuten `javax.xml.bind`, eivรคt oletuksena ole kรคytettรคvissรค, kehittรคjรคt pakotettiin olemaan tietoisempia projektiensa riippuvuuksista.

Tรคmรค muutos, vaikkakin aluksi hรคmmentรคvรค, pรครคtyi rohkaisemaan hyviรค kรคytรคntรถjรค riippuvuuden hallinnassa, tehden projekteista kestรคvรคmpiรค ja helpompia yllรคpitรครค pitkรคllรค aikavรคlillรค.

Nรคmรค muutokset tarkoittavat kuitenkin sitรค, ettรค kehittรคjien on perehdyttรคvรค uuteen moduulijรคrjestelmรครคn ja riippuvuuksien hallintaan selkeรคmmin. Mutta tietyllรค harjoituksella puuttuviin moduuleihin liittyvien ongelmien kรคsitteleminen Java 9:ssรค ja uudemmissa versioissa tulee hallittavaksi ja jopa toissijaiseksi.

Tรคmรค Java-moduulijรคrjestelmรครคn tehty sรครคtรถ on osoitus tekniikan kehittyvรคstรค luonteesta ja kehittรคjien kyvystรค mukautua muutoksiin uusien kรคytรคntรถjen myรถtรค.

Related viestiรค:

Jรคtรค kommentti