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

How do I include a java 9 module at runtime?

我有一个服务器套件,我正在尝试在 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 模块的依赖。有没有办法解决这个错误,不需要我将服务器套件重新编译成模块?

Java EE 模块附带 JDK,但 not resolved by defaultjava.xml.bind 是其中之一。在这种情况下,它们需要明确包含在 --add-modules.

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