我正在维护一个最初用 1.4 编写的旧 Java 项目,现在正在迁移到 Java 7 环境。该项目使用Ant。
构建时,我收到以下警告
warning: [options] bootstrap class path not set in conjunction with -source 1.4
而且我想我现在已经做了足够的阅读来理解这是因为我正在使用 Java 7 编译器来编译代码以在 1.4 中运行。但是我不想要这个 - 我想使用 7 编译器来构建 7 代码。
使用ant -v
我看到参数-source 1.4
已传递给 javac 命令,但我找不到它的来源。build.xml 使用的 build.properties 文件都没有提供此参数。该项目使用了一些 xmlbean 功能,并且在 build.xml 中构建 xmlbean 目标时会发出警告。
我还有一些其他项目正在经历类似的过程,这些项目在构建期间不会发出警告。在这些项目中,Ant 没有通过 -source 1.4。到 javac 他们没有使用 xmlbeans,所以我认为问题可能与此有关。
经过大量搜索后,我决定将 1.4 rt.jar 放在类路径中,然后忘记它。然而这并没有帮助。我首先将它包含在 xmlbeans 目标的类路径中,然后作为整个 build.xml 文件的“bootclashpath”属性,但没有任何乐趣。
build.xml 的相关部分如下所示
<target name="xmlbeans" depends="setup">
<xmlbean classgendir="${schema.compile.dir}" destfile="${dist.dir}/${schema.jar.file}" failonerror="true">
<fileset dir="${config.dir}">
<include name="**/*.xsd"/>
</fileset>
<classpath>
<pathelement location="${lib.dir}/xbean.jar"/>
<pathelement location="${lib.dir}/jsr173_1.0_api.jar"/>
</classpath>
</xmlbean>
</target>
<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean">
<classpath>
<pathelement location="${lib.dir}/xbean.jar"/>
<pathelement location="${lib.dir}/jsr173_1.0_api.jar"/>
</classpath>
</taskdef>