我下载了JAXB 2.3.0.1和JavaBeans激活框架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文件中存在类。我还尝试使用新的(to 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。
发布于 2018-10-03 17:46:28
主要问题是java可执行文件不支持同时指定-cp和-jar命令行参数。感谢艾伦·贝特曼提供的信息!
因此,使其工作的正确方法是使用以下命令:
java -cp javax.activation-1.2.0.jar;jaxb-xjc.jar com.sun.tools.xjc.XJCFacade
[xjc-arguments]为了简化运行XJC,打开bin/xjc.bat (从jaxb-ri-2.3.0.zip中提取),并编辑命令行以匹配上面的调用。
https://stackoverflow.com/questions/52618325
复制相似问题