如何使用默认值为pugin和jdk 1.6的最新jaxb

时间:2013-01-02 20:23:47

标签: jaxb jdk1.6

从jdk 1.6开始,jaxb-xjc相关的jar包含在使用 java 命令时由JVM自动加载。我目前正尝试以下列方式使用xjc默认值插件:

java -Djava.endorsed.dirs=C:\workspace\javalibs\xjc -classpath C:\apache-ant-1.8.3\lib\ant.jar;c:\workspace\javalibs\xjc\cxf-xjc-dv-2.6.1.jar com.sun.tools.xjc.XJCFacade -d test -extension -Xdv -verbose test.xsd

java.endorsed.dirs属性应该允许您使用更新的完整版本覆盖jdk的jdk版本。 jdk 1.6中使用的版本是 2.1.10 。因此,我将jaxb 2.2 相关的jar放在背书目录中。尽管如此,我在执行 java 命令时遇到以下错误:

Exception in thread "main" java.lang.LinkageError: loader constraint violation:
loader (instance of <bootloader>) previously initiated loading for a different type with name "com/sun/tools/xjc/outline/Outline"
    at org.apache.cxf.xjc.dv.DefaultValuePlugin.run(DefaultValuePlugin.java:105)
    at com.sun.tools.xjc.addon.apache_cxf.dv.DefaultValuePlugin.run(DefaultValuePlugin.java:59)
    at com.sun.tools.xjc.model.Model.generateCode(Model.java:290)
    at com.sun.tools.xjc.Driver.run(Driver.java:343)
    at com.sun.tools.xjc.Driver.run(Driver.java:191)
    at com.sun.tools.xjc.Driver._main(Driver.java:116)
    at com.sun.tools.xjc.Driver.access$000(Driver.java:74)
    at com.sun.tools.xjc.Driver$1.run(Driver.java:96)

然后我用jdk 1.5测试了这个插件,这些类是由xjc正确生成的,没有故障。原因是jdk 1.5不包含jaxb-xjc相关的jar,所以它们没有预先加载,因此没有Linkage错误冲突。我的问题是如何让jdk 1.6使用我提供的jaxb jar(通过java.endorsed.dirs或其他方式),而不是预先打包的jar,以便我可以正确使用插件?

0 个答案:

没有答案