Java 11 și Cum se remediază java.lang. TypeNotPresentException: Tastați javax.xml.bind.JAXBContext Exception?
Publicat: 2018-12-15Te confrunți cu java.lang.TypeNotPresentException : Tastați excepția javax.xml.bind.JAXBContext care nu este prezentă ?
Astăzi, în timp ce rulez serviciul meu RESTful pe Eclipse, am observat o eroare javax.xml.bind.JAXBContext
în consola mea Eclipse. Același program a funcționat perfect de anul trecut, fără nicio problemă.
Am început să mă gândesc la schimbările care au avut loc în mediul meu local. Nu a avut loc nicio înregistrare a codului de anul trecut, așa că m-am gândit că este în principal din cauza ultimei mele actualizări Java 11.
După cum vedeți în „Totul despre Java 11” anterior, nu mai există suport pentru modulele Java EE în el. Java 11 a eliminat suportul pentru java.xml.bind
– care definește API-ul Java Architecture for XML Binding (JAXB).
Ea este un stack-trace complet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Dec 14 , 2018 1 : 23 : 19 PM com . sun . jersey . api . core . servlet . WebAppResourceConfig init INFO : Scanning for root resource and provider classes in the Web app resource paths : / WEB - INF / lib / WEB - INF / classes Dec 14 , 2018 1 : 23 : 20 PM com . sun . jersey . server . impl . application . WebApplicationImpl _initiate INFO : Initiating Jersey application , version 'Jersey: 1.17.1 02/28/2013 12:47 PM' Dec 14 , 2018 1 : 23 : 20 PM org . apache . catalina . core . ApplicationContext log SEVERE : StandardWrapper . Throwable java . lang . TypeNotPresentException : Type javax . xml . bind . JAXBContext not present at java . base / sun . reflect . generics . factory . CoreReflectionFactory . makeNamedType ( CoreReflectionFactory . java : 117 ) at java . base / sun . reflect . generics . visitor . Reifier . visitClassTypeSignature ( Reifier . java : 125 ) at java . base / sun . reflect . generics . tree . ClassTypeSignature . accept ( ClassTypeSignature . java : 49 ) at java . base / sun . reflect . generics . visitor . Reifier . reifyTypeArguments ( Reifier . java : 68 ) at java . base / sun . reflect . generics . visitor . Reifier . visitClassTypeSignature ( Reifier . java : 138 ) at java . base / sun . reflect . generics . tree . ClassTypeSignature . accept ( ClassTypeSignature . java : 49 ) at java . base / sun . reflect . generics . repository . ClassRepository . computeSuperInterfaces ( ClassRepository . java : 117 ) at java . base / sun . reflect . generics . repository . ClassRepository . getSuperInterfaces ( ClassRepository . java : 95 ) at java . base / java . lang . Class . getGenericInterfaces ( Class . java : 1138 ) at com . sun . jersey . core . reflection . ReflectionHelper . getClass ( ReflectionHelper . java : 533 ) at com . sun . jersey . core . reflection . ReflectionHelper . getClass ( ReflectionHelper . java : 529 ) at com . sun . jersey . core . spi . factory . ContextResolverFactory . getParameterizedType ( ContextResolverFactory . java : 202 ) at com . sun . jersey . core . spi . factory . ContextResolverFactory . init ( ContextResolverFactory . java : 89 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . core . StandardServer . startInternal ( StandardServer . java : 801 ) at org . apache . catalina . util . LifecycleBase . start ( LifecycleBase . java : 183 ) at org . apache . catalina . startup . Catalina . start ( Catalina . java : 695 ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke0 ( Native Method ) at java . base / jdk . internal . reflect . NativeMethodAccessorImpl . invoke ( NativeMethodAccessorImpl . java : 62 ) at java . base / jdk . internal . reflect . DelegatingMethodAccessorImpl . invoke ( DelegatingMethodAccessorImpl . java : 43 ) at java . base / java . lang . reflect . Method . invoke ( Method . java : 566 ) at org . apache . catalina . startup . Bootstrap . start ( Bootstrap . java : 350 ) at org . apache . catalina . startup . Bootstrap . main ( Bootstrap . java : 492 ) Caused by : java . lang . ClassNotFoundException : javax . xml . bind . JAXBContext at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1328 ) at org . apache . catalina . loader . WebappClassLoaderBase . loadClass ( WebappClassLoaderBase . java : 1157 ) at java . base / java . lang . Class . forName0 ( Native Method ) at java . base / java . lang . Class . forName ( Class . java : 398 ) at java . base / sun . reflect . generics . factory . CoreReflectionFactory . makeNamedType ( CoreReflectionFactory . java : 114 ) . . . 59 more |
Și acesta este motivul pentru care am început să ajung deasupra excepției. Pachetul Java 11 pentru javax.xml.bind
nu mai există.

- Versiunea Java 7: inclusă și funcțională
- Versiunea Java 8: inclusă și funcțională
- Versiunea Java 9: depreciată
- Versiunea Java 10: depreciată
- Versiunea Java 11: eliminată
Pentru a remedia această problemă, trebuie să adăugați manual mai jos dependențe JAXB Maven la proiectul dvs.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
< dependency > < groupId > com . sun . xml . bind < / groupId > < artifactId > jaxb - core < / artifactId > < version > 2.3.0.1 < / version > < / dependency > < 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 > |
Iată fișierul meu complet pom.xml, dacă este necesar:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
< project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns : xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi : schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" > < modelVersion > 4.0.0 < / modelVersion > < groupId > CrunchifyRESTfulServiceVersion < / groupId > < artifactId > CrunchifyRESTfulServiceVersion < / artifactId > < version > 0.0.1 - SNAPSHOT < / version > < packaging > war < / packaging > < build > < sourceDirectory > src < / sourceDirectory > < plugins > < plugin > < artifactId > maven - compiler - plugin < / artifactId > < version > 3.8.0 < / version > < configuration > < release > 10 < / release > < / configuration > < / plugin > < plugin > < artifactId > maven - war - plugin < / artifactId > < version > 3.2.1 < / version > < configuration > < warSourceDirectory > WebContent < / warSourceDirectory > < / configuration > < / plugin > < / plugins > < / build > < dependencies > < dependency > < groupId > com . sun . xml . bind < / groupId > < artifactId > jaxb - core < / artifactId > < version > 2.3.0.1 < / version > < / dependency > < 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 > < / dependencies > < / project > |
Încercați să vă curățați proiectul Eclipse și încercați să rulați din nou serverul Tomcat. Nu ar trebui să mai vedeți această problemă.
Codare fericită și anunțați-mă dacă încă vă confruntați cu această excepție după ce adăugați mai sus dependențe Maven.