Počínaje úvodem je chyba „javax.xml.bind neexistuje“ jedním z nejčastějších problémů, s nimiž se vývojáři potýkají při přechodu ze starších verzí Javy na novější, zejména z Javy 8 na Javu 9 nebo novější. Během tohoto přechodu se můžete setkat s touto zprávou oznamující, že určitý balíček chybí, hlavně proto, že javax.xml.bind byl v Javě 9 zastaralý a z Javy 11 byl odstraněn.
`javax.xml.bind` se používá pro Java Architecture for XML Binding (JAXB). Používá se k převodu objektů Java do XML a naopak. Důležitost JAXB nemůže být přeceňována, protože poskytuje metody pro uvolnění, zařazování a ověřování operací.
Problémy a řešení JDK
Hlavní důvod této chybové zprávy je, že s vydáním Java SE 9 a systému modulů byly některé balíčky odstraněny z výchozí cesty třídy, včetně `javax.xml.bind`.
Pro rychlou a dočasnou opravu můžete použít volbu příkazového řádku `–add-modules`, pokud program spouštíte z příkazového řádku. Pro Maven a další podobné nástroje pro sestavení můžete potřebné závislosti přidat přímo do souboru pom.xml nebo build.gradle.
<!-- This command tells Java to add the 'java.xml.bind' module to your classpath --> java --add-modules java.xml.bind YourApp
Chcete-li však trvalejší řešení, zejména pokud plánujete migrovat své projekty na Java 11 a novější, budete muset knihovnu JAXB (javax.xml.bind) zahrnout ručně do cesty třídy vašeho projektu.
Přidání závislosti JAXB, krok za krokem
Chcete-li do svého projektu zahrnout JAXB, musíte nejprve do souboru pom.xml nebo build.gradle přidat závislost `jaxb-api`. Implementaci JAXB v úložišti poskytuje `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>
Po zahrnutí těchto závislostí do vašeho projektu, váš problém s „javax.xml.bind neexistuje“ by měl být vyřešen.
Pochopení dopadu změn v Javě 9 a dále
Java 9 představila nový modulový systém, který významně ovlivnil způsob, jakým vývojáři vytvářejí a spravují své aplikace. Tím, že balíčky jako `javax.xml.bind` byly ve výchozím nastavení nepřístupné, byli vývojáři nuceni si více uvědomovat závislosti ve svých projektech.
Tato změna, i když byla zpočátku otřesná, skončila povzbuzením osvědčených postupů ve správě závislostí, díky čemuž jsou projekty robustnější a dlouhodobě snadnější na údržbu.
To znamená, že tyto změny znamenají, že se vývojáři musí seznámit s novým systémem modulů a jak explicitněji spravovat závislosti. Ale s trochou praxe se řešení problémů souvisejících s chybějícími moduly v Javě 9 a dále stává zvládnutelným, a dokonce přirozenou záležitostí.
Tato úprava systému modulů Java je důkazem vyvíjející se povahy technologie a schopnosti vývojářů přizpůsobit se změnám pomocí nových postupů.