如何在 Java 9+ 中 运行 XJC
How to Run XJC in Java 9+
我下载了 JAXB 2.3.0.1 and JavaBeans Activation Framework (JAF) 1.2.0 (based on the answer to )。我将所有 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
...
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
我已验证 class 存在于 javax.activation-1.2.0.jar 文件中。我也尝试过使用新的(到 Java 9+)参数 -p . --add-modules java.activation
,但失败并显示以下错误消息:
Error occurred during initialization of boot layer
java.lang.modules.ResolutionException: Modules jaxb.core and jaxb.impl export package com.sun.xml.bind.marshaller to module java.activation
如果我尝试 -cp
和 --add-modules
的组合,我会得到一个不同的引导层初始化错误。有谁知道如何使用 Java 9+ 平台让 XJC 达到 运行?
我的具体用例是 Windows 上的 OpenJDK 11。
主要问题是 java 可执行文件不支持同时指定 -cp
和 -jar
命令行参数同一时间。感谢 Alan Bateman 提供的信息!
因此,使其正常工作的正确方法是使用以下命令:
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),并编辑命令行以匹配上述调用。
我下载了 JAXB 2.3.0.1 and JavaBeans Activation Framework (JAF) 1.2.0 (based on the answer to
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
...
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
我已验证 class 存在于 javax.activation-1.2.0.jar 文件中。我也尝试过使用新的(到 Java 9+)参数 -p . --add-modules java.activation
,但失败并显示以下错误消息:
Error occurred during initialization of boot layer
java.lang.modules.ResolutionException: Modules jaxb.core and jaxb.impl export package com.sun.xml.bind.marshaller to module java.activation
如果我尝试 -cp
和 --add-modules
的组合,我会得到一个不同的引导层初始化错误。有谁知道如何使用 Java 9+ 平台让 XJC 达到 运行?
我的具体用例是 Windows 上的 OpenJDK 11。
主要问题是 java 可执行文件不支持同时指定 -cp
和 -jar
命令行参数同一时间。感谢 Alan Bateman 提供的信息!
因此,使其正常工作的正确方法是使用以下命令:
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),并编辑命令行以匹配上述调用。