我在更新遗留应用程序使用Java SE 6,而不是Java 5的SE的过程。 该应用程序使用JAXB,并在Java 5的SE它具有类路径的JAXB参考实现罐子。 当我移动到Java SE 6(更新38),我打了几个凸块(见链接问题#1 ),我有一些帮助解决。
所以这是造成麻烦,接下来的事情是该项目的Ant构建脚本。 当蚂蚁编译执行任务,它拿起JAXB的嵌入式版本附带的Java SE 6,而不是从我已经包含在类路径中(JAXB的2.2.6版本)的罐子版本。 我相信的Java SE 6 JAXB包括2.1.x. 这是导致编译时错误是这样的:
[javac] location: @interface javax.xml.bind.annotation.XmlElementRef
[javac] @XmlElementRef(name = "abbrev", type = JAXBElement.class, required = false)
在这种情况下,“必要”的属性没有在JAXB的2.1.x的@XmlElementRef存在的,但它在2.2.x中不
我怎样才能改变我的Ant构建脚本,以便从构建类路径,而不是被包装在Java SE 6 JDK中的类拿起JAXB 2.2.6罐子?
更新:根据彼得的回答解决方案
<target name="compile" depends="clean">
<javac deprecation="on"
classpathref="prj.classpath"
srcdir="${src}"
destdir="${build.dir}"
debug="on"
debuglevel="lines,vars,source"
source="1.6">
<compilerarg value="-Djava.endorsed.dirs=${lib.ext.dir}/jaxb"/>
</javac>
</target>