Posted at

java.lang.ClassNotFoundException: javax.xml.bind.JAXBException と来た時の対応

More than 1 year has passed since last update.

Java 9 にアップデートして、

Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException

at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496) ~[na:na]

と来た時は、jaxb-apiを依存関係に加えてやりましょう。

gradle なら、

compile group: 'javax.xml.bind', name: 'jaxb-api', version: '2.3.0'

Mavenなら

<dependency>

<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>

バージョンはその時の最新がおすすめです。


理由

Java 9 から、一部J2EEのクラスがJDKからデフォルトでは参照できなくなったことが原因です。

Javaの起動オプションでも対応できますが、今後のことを考えると、ビルドシステムへ依存性を記載しておいたほうがいいでしょう。