我应该在Maven项目中为JAXB RI使用哪些工件?
从历史上看,我总是在我的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:
org.glassfish.jaxb jaxb-runtime ...
模式编译器(XJC)
如果您有XML Schema并且想要从中生成Java代码:
org.glassfish.jaxb jaxb-xjc ...
模式生成器(JXC / schemagen
)
如果您有带有JAXB注释的Java类,并希望基于它们生成XML模式:
org.glassfish.jaxb jaxb-jxc ...
后两个工件( org.glassfish.jaxb:jaxb-xjc
和org.glassfish.jaxb:jaxb-jxc
)由Maven插件包装,因此通常在运行时不需要它们。
Eclipse的用法
如果您的Maven项目以某种方式无法获得完整的类路径,请打开调试输出并检查Maven控制台。 您可能会看到以下错误消息:
[错误]’dependencyManagement.dependencies.dependency.systemPath’对于com.sun:tools:jar必须指定一个绝对路径,但是$ {tools.jar} @
这是由于以下问题:
Maven没有正确选择JAVA_HOME
@rustyx的解决方案是在eclipse.ini
添加-vm
选项:
-vm \jre\bin\javaw.exe