JAXB在java9模块中的问题

JAXB在java9模块中的问题,java,jaxb,java-module,Java,Jaxb,Java Module,我正在升级我们的应用程序,以使用Java9(小步骤…一旦9开始工作,我们将跳到10)。我们遇到的一个问题是,在运行时,我们得到了一个模块异常,我似乎不知道发生了什么。诚然,我对模块还不熟悉,并且已经阅读了所有我能找到的关于这个主题的内容,但我猜这可能是一个简单的答案 要调用的运行时是 java --add-modules java.se,java.se.ee -cp mainjar.jar:jaxb-api.jar:jaxb-impl.jar:jaxb-core.jar foo.bar.Laun

我正在升级我们的应用程序,以使用Java9(小步骤…一旦9开始工作,我们将跳到10)。我们遇到的一个问题是,在运行时,我们得到了一个模块异常,我似乎不知道发生了什么。诚然,我对模块还不熟悉,并且已经阅读了所有我能找到的关于这个主题的内容,但我猜这可能是一个简单的答案

要调用的运行时是

java --add-modules java.se,java.se.ee -cp mainjar.jar:jaxb-api.jar:jaxb-impl.jar:jaxb-core.jar foo.bar.Launch
尝试读取XML数据时发生异常:

 WARN:09:22:10.777 [main] (Preference:969) - Failed to unmarshal preference value for key [launch.maxMemory]: javax.xml.bind.JAXBException: Package java.lang with JAXB class java.lang.Integer defined in a module java.base must be open to at least java.xml.bind module.
javax.xml.bind.JAXBException: Package java.lang with JAXB class java.lang.Integer defined in a module java.base must be open to at least java.xml.bind module.
    at java.xml.bind@9.0.4/javax.xml.bind.ModuleUtil.delegateAddOpensToImplModule(Unknown Source)
    at java.xml.bind@9.0.4/javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at java.xml.bind@9.0.4/javax.xml.bind.ContextFinder.newInstance(Unknown Source)
    at java.xml.bind@9.0.4/javax.xml.bind.ContextFinder.find(Unknown Source)
    at java.xml.bind@9.0.4/javax.xml.bind.JAXBContext.newInstance(Unknown Source)
    at java.xml.bind@9.0.4/javax.xml.bind.JAXBContext.newInstance(Unknown Source)

我也有类似的问题。
我在
com.redeg
中有我的实体,在
com.redeg.XML
中有用于处理XML的类,并在
模块info.java
文件中添加一行
将com.redeg.XML打开到java.XML.bind

模块信息.java

module com.redeg{
出口com.redeg;
需要java.xml.bind;
打开com.redeg到java.xml.bind;
打开com.redeg.xml到java.xml.bind;
}

自Java 9以来,反射必须遵循访问修饰符的规则。这意味着,如果模块未打开,则通过反射进行访问必须避开修改器。在您的例子中,
JAXB
似乎难以读取
整数的
int值。通过将
--add opens java.base/java.lang=java.xml.bin
添加到
java
命令中,可以为
javax.xml.bind
打开
java.lang.Integer
。您可以找到更多信息。请参阅图灵85-解决了这里的问题。如果你能给我一个答案,我会接受的。谢谢你的帮助!