历史上,在我的Maven项目中,我总是使用以下JAXB RI工件:
com.sun.xml.bind:jaxb-impl
- 运行时com.sun.xml.bind:jaxb-xjc
- 模式编译器com.sun.xml.bind:jaxb-jxc
- 模式生成器
自大约版本2.2.10*
以来,这些工件现在被描述为“旧的”:
com.sun.xml.bind:jaxb-impl
旧的JAXB运行时模块。
看起来这些工件现在已经过时了。
问题是:
相应地应该使用哪些工件?
历史上,在我的Maven项目中,我总是使用以下JAXB RI工件:
com.sun.xml.bind:jaxb-impl
- 运行时com.sun.xml.bind:jaxb-xjc
- 模式编译器com.sun.xml.bind:jaxb-jxc
- 模式生成器自大约版本2.2.10*
以来,这些工件现在被描述为“旧的”:
com.sun.xml.bind:jaxb-impl
旧的JAXB运行时模块。
看起来这些工件现在已经过时了。
问题是:
相应地应该使用哪些工件?
在与 Oracle 澄清后,应使用以下工件:
如果您想将 XML 反序列化为 Java 对象或将 Java 对象序列化为 XML:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>...</version>
</dependency>
如果您拥有一个XML Schema并希望生成相应的Java代码:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>...</version>
</dependency>
schemagen
)如果您有带有JAXB注释的Java类并且想要基于它们生成XML模式:
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-jxc</artifactId>
<version>...</version>
</dependency>
两个后续的构件 (org.glassfish.jaxb:jaxb-xjc
and org.glassfish.jaxb:jaxb-jxc
)由Maven插件包装,因此在运行时通常不需要它们。
如果你的Maven项目无法获取完整的类路径,请打开调试输出并查看Maven控制台。您可能会在那里看到以下错误信息:
[ERROR] 'dependencyManagement.dependencies.dependency.systemPath' for com.sun:tools:jar must specify an absolute path but is ${tools.jar} @
这是由以下问题导致的:
@rustyx提供的解决方案是将-vm
选项添加到eclipse.ini
中:
-vm
<PATH_TO_JDK>\jre\bin\javaw.exe
<!-- API classes for Jakarta XML Binding. Required to compile against Jakarta XML Binding. -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- Contains the main runtime used for serialization and deserialization java objects to/from xml. -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.6</version>
</dependency>
<!-- Tool to generate Jakarta XML Binding java sources from XML representation. -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.3.6</version>
</dependency>
<!-- Tool to generate XML schema from Jakarta XML Binding java sources. -->
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-jxc</artifactId>
<version>2.3.6</version>
</dependency>
它们在 Maven 中的坐标为:一般来说,应该使用
com.sun.xml.bind
的构件。
<!-- API classes for Jakarta XML Binding. Required to compile against Jakarta XML Binding. -->
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
</dependency>
<!-- RI Implementation of JAXB runtime jar. -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.6</version>
</dependency>
<!-- Class generation tool jar. -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-xjc</artifactId>
<version>2.3.6</version>
</dependency>
<!-- Schema generation tool jar. -->
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-jxc</artifactId>
<version>2.3.6</version>
</dependency>
javax.activation
activation
1.1.1
- Anddo