How to build xerces-j 2.11 with an up-to-date JVM?
ant, build, java, xerces
Solution
You need to prepend the `xml-apis.jar` to the bootstrap classes of the Javac.
<xjavac srcdir="${build.src}"
destdir="${build.dest}"
source="${javac.source}"
target="${javac.target}"
classpath="${build.dir}/classes:${tools.dir}/${jar.apis}:${tools.dir}/${jar.resolver}:${tools.dir}/${jar.serializer}"
debug="${debug}"
debuglevel="${debuglevel}"
deprecation="${deprecation}"
optimize="${optimize}"
includeAntRuntime="false"
includeJavaRuntime="false"
excludes="org/xml/sax/**
javax/xml/**
org/w3c/dom/*
org/w3c/dom/bootstrap/**
org/w3c/dom/events/**
org/w3c/dom/ls/**
org/w3c/dom/html/**
org/w3c/dom/ranges/**
org/w3c/dom/traversal/**
org/w3c/dom/views/**
org/w3c/dom/xpath/**"
>
<compilerarg line="-Xbootclasspath/p:${tools.dir}/${jar.apis}"/>
</xjavac>
Problem
I have checked out xerces-j 2.11 from https://svn.apache.org/repos/asf/xerces/java/tags/Xerces-J_2_11_0. Now I would like to build it, but I get the following errors during comilation: ``` compile: [xjavac] Compiling 596 source files to C:\Users\abrieg\workingcopy\xerces-trunk\build\classes [xjavac] C:\Users\abrieg\workingcopy\xerces-trunk\build\src\org\apache\html\dom\HTMLFrameElementImpl.java:28: error: HTMLFrameElementImpl is not abstract and does not override abstract method getContentDocument() in HTMLFrameElement [xjavac] public class HTMLFrameElementImpl [xjavac] ^ [xjavac] C:\Users\abrieg\workingcopy\xerces-trunk\build\src\org\apache\html\dom\HTMLIFrameElementImpl.java:28: error: HTMLIFrameElementImpl is not abstract and does not override abstract method getContentDocument() in HTMLIFrameElement [xjavac] public class HTMLIFrameElementImpl [xjavac] ^ [xjavac] C:\Users\abrieg\workingcopy\xerces-trunk\build\src\org\apache\html\dom\HTMLObjectElementImpl.java:28: error: HTMLObjectElementImpl is not abstract and does not override abstract method getContentDocument() in HTMLObjectElement [xjavac] public class HTMLObjectElementImpl [xjavac] ^ [xjavac] Note: Some input files use or override a deprecated API. [xjavac] Note: Recompile with -Xlint:deprecation for details. [xjavac] Note: Some input files use unchecked or unsafe operations. [xjavac] Note: Recompile with -Xlint:unchecked for details. [xjavac] 3 errors ``` The problem is that the xjavac task does not use the classes from the `/tools/xml-apis.jar` but instead uses `rt.jar` of the jdk. The compilation is running in the following VM: ``` java version "1.8.0_31" Java(TM) SE Runtime Environment (build 1.8.0_31-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode) ``` I already used the endorsed libraries override mechanism to put the `xml-apis.jar` of xerces-j 2.11 in the VM, but this didn't work. The `xjavac` invocation is defined as ``` <xjavac srcdir="${build.src}" destdir="${build.dest}" source="${javac.source}" target="${javac.target}" classpath="${build.dir}/classes:${tools.dir}/${jar.apis}:${tools.dir}/${jar.resolver}:${tools.dir}/${jar.serializer}" debug="${debug}" debuglevel="${debuglevel}" deprecation="${deprecation}" optimize="${optimize}" includeAntRuntime="false" includeJavaRuntime="false" excludes="org/xml/sax/** javax/xml/** org/w3c/dom/* org/w3c/dom/bootstrap/** org/w3c/dom/events/** org/w3c/dom/ls/** org/w3c/dom/html/** org/w3c/dom/ranges/** org/w3c/dom/traversal/** org/w3c/dom/views/** org/w3c/dom/xpath/**" /> ``` How can I make sure that `xml-apis.jar` is used for compilation instead of the classes from my JVM?