【问题标题】:Trying to find where Ant's javac -source 1.4 argument comes from试图找到 Ant 的 javac -source 1.4 参数来自哪里
【发布时间】:2013-10-17 19:07:55
【问题描述】:

我正在维护一个最初用 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>

【问题讨论】:

    标签: java ant javac xmlbeans bootclasspath


    【解决方案1】:

    似乎XmlBeans 是造成这种情况的原因。
    来自他们的installation instructions:
    "要求

    在安装 XMLBeans 之前,您需要安装 JDK 1.4 和 Ant。一旦你有了这些,继续下面的步骤。”

    可能是一些 xmlbeans 内部的!?检查他们的来源。
    如果可以的话,请参阅另一个 stackoverflow 帖子以获取替代方案:
    Java Xml Binding

    【讨论】:

    • 很有趣,但您能告诉我 XmlBeans 将如何影响 Ant 传递的编译器参数吗?我什至不知道包含的 jar 将如何将其传达给构建管理器
    • see => grepcode.com/file/repo1.maven.org/maven2/org.apache.xmlbeans/… - 第 264 行还在第 782 行上方评论 = "生成与给定版本兼容的 java 源代码。目前,仅支持 "1.4" 或 "1.5",而 "1.4" 是默认值。”
    • 好吧,我还是不太明白这两者是如何交流的,但看起来这很可能是问题所在!谢谢。现在我需要弄清楚是否可以使用 rt.jar 来删除警告
    • 似乎 source=1.4 是使用 任务时的默认值,只有 1.4 或 1.5 是可能的值。我敢打赌,当使用 你会得到 -source 1.5 From xmlbeans.apache.org/news.html => "从 XmlBeans 2.6.0 开始,二进制文件与 JDK1.6 兼容。来源是仍然与 JDK 1.4 兼容”似乎 JAXB 是一个更好的解决方案
    • P.S.:将 1.4 rt.jar 放在类路径或类似路径上是一种 hack 但没有解决方案 ;-) 在这种情况下它不会解决您的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2021-09-12
    • 2018-07-27
    相关资源
    最近更新 更多