我有一个服务器工具包,我试图在java9 JDK上测试(找到here,我使用的是64位Linux版本)但是我遇到了启动后不久出现以下错误:
java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException
Caused by: java.lang.ClassNotFoundException: javax.xml.bind.JAXBException
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:533)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:186)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:476)
使用java8时,服务器套件启动时没有问题。不知怎的,我需要告诉运行时系统包含javax.xml.bind
模块,但我是java9的新手,并且不知道如何将整个服务器工具包重新编译成模块并添加对javax.xml.bind
模块的依赖。有没有办法解决这个错误,并不要求我将服务器工具包重新编译成模块?
答案 0 :(得分:8)
Java EE模块随JDK一起提供,但not resolved by default和 java.xml.bind 就是其中之一。在这种情况下,需要明确包含--add-modules
。
在您的情况下,使用--add-modules java.xml.bind
启动。