我下载了JAXB 2.3.0.1和JavaBeans Activation Framework (JAF) 1.2.0(基于对这个问题的回答)。我将所有 JAR 文件提取到同一目录,然后在该目录中运行以下命令:
java -cp jaxb-api.jar;jaxb-core.jar;jaxb-impl.jar;javax.activation-1.2.0.jar
-jar jaxb-xjc.jar [xjc-arguments]
上述命令失败并显示以下消息:
java.lang.NoClassDefFoundError: javax/activation/DataSource
...
引起:java.lang.ClassNotFoundException: javax.activation.DataSource
我已验证 javax.activation-1.2.0.jar 文件中存在该类。我也尝试过使用新的(Java 9+)参数-p . --add-modules java.activation
,但失败并显示以下错误消息:
初始化引导层
java.lang.modules.ResolutionException 时出错:模块 jaxb.core 和 jaxb.impl 将包 com.sun.xml.bind.marshaller 导出到模块 java.activation
如果我尝试组合-cp
和--add-modules
,我会得到一个不同的引导层初始化错误。有谁知道如何让 XJC 使用 Java 9+ 平台运行?
我的具体用例是 Windows 上的 OpenJDK 11。