我根据这个问题的答案,下载了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]
上述命令出现以下错误消息:
我已验证该类存在于javax.activation-1.2.0.jar文件中。我还尝试使用新的(适用于Java 9+)参数java.lang.NoClassDefFoundError: javax/activation/DataSource
...
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
-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。
a:javax.activation g:com.sun.activation
,并确保引用正确的jar名称。由于日志中的DataSource
类似乎就在这个构件中https://github.com/eclipse-ee4j/jaf/blob/master/activation/src/main/java/javax/activation/DataSource.java。 - Namanjaxb-api
版本 2.3.1,那么您就不需要再显式地包含 JAF 了。 - Jesper