Java11とjava.langの修正方法。 TypeNotPresentException:タイプjavax.xml.bind.JAXBContext例外?
公開: 2018-12-15java.lang.TypeNotPresentExceptionに直面しています:タイプjavax.xml.bind.JAXBContext not present例外?
今日、EclipseでRESTfulサービスを実行しているときに、Eclipseコンソールでjavax.xml.bind.JAXBContext
エラーに気づきました。 同じプログラムは昨年から問題なく完全に正常に実行されていました。
私は自分の地域の環境に起こった変化について考え始めました。 昨年からコードチェックインは行われていなかったので、主に最新のJava11アップグレードが原因だと思いました。
以前の「Java11に関するすべて」で見たように、JavaEEモジュールはサポートされなくなりました。 Java 11は、 java.xml.bind
のサポートを削除しました。これは、Java Architecture for XML Binding(JAXB)APIを定義します。
彼女は完全なスタックトレースです:
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 |
そして、それが私が例外を超え始めた理由です。 javax.xml.bind
用のJava11パッケージはもう存在しません。

- Java 7バージョン:含まれ、機能している
- Java 8バージョン:含まれ、機能している
- Java 9バージョン:非推奨
- Java 10バージョン:非推奨
- Java 11バージョン:削除
この問題を修正するには、以下のJAXBMaven依存関係をプロジェクトに手動で追加する必要があります。
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 > |
必要に応じて、完全なpom.xmlファイルを次に示します。
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 > |
Eclipseプロジェクトをクリーンアップして、Tomcatサーバーを再度実行してみてください。 この問題はもう発生しないはずです。
コーディングを楽しんでください。上記のMaven依存関係を追加した後も、この例外が発生する場合はお知らせください。