如何在运行时包含 java 9 模块



我有一个服务器工具包,我正在尝试在java9 JDK上进行测试(在这里找到,我使用的是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模块的依赖。 有没有办法解决这个不需要我将服务器工具包重新编译为模块的错误?

Java EE模块随JDK一起提供,但默认情况下不解析,java.xml.bind就是其中之一。在这种情况下,它们需要明确包含在 --add-modules 中。

在您的情况下,请使用 --add-modules java.xml.bind .

最新更新