【问题标题】:How do I set -Dfile.encoding within ant's build.xml?如何在 ant 的 build.xml 中设置 -Dfile.encoding?
【发布时间】:2010-11-23 06:51:43
【问题描述】:

我有使用 iso-8859-1 编码的 java 源文件。当我运行 ant 时,我收到“警告:用于编码 UTF-8 的不可映射字符”。如果我运行 ant -Dfile.encoding=iso-8859-1 或将 encoding="ISO-8859-1" 添加到每个 javac 语句中,我可以避免这种情况。 p>

有没有办法在 build.xml 中全局设置属性? 不起作用。我知道我可以添加一个 foo=ISO-8859-1 属性并将 encoding="${foo}" 设置到每个 javac 语句,但我试图避免这种情况。

【问题讨论】:

标签: java ant character-encoding javac


【解决方案1】:

如果您有以特定方式编码的文件,最好告诉 javac 而不是强制整个 JVM 使用特定编码。出于这个原因,javac task 有一个编码属性。

<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />

但实际上,您应该只将源文件转换为 UTF-8。 UTF-8 中的一切都更好。 :)

【讨论】:

  • 即使您将内容转换为 UTF-8,有时您也必须有一个干净的环境 (LC_ALL=C),这非常方便。
【解决方案2】:

几个选项:

  1. -Dfile.encoding=iso-8859-1 添加到您的ANT_OPTS 环境变量中
  2. 使用&lt;presetdef&gt; 为所有&lt;javac&gt; 调用设置默认值

【讨论】:

    【解决方案3】:

    在更改构建文件之前,我收到如下 java 编译错误。

    ApplicationConstant.java:73: 错误:用于编码 ascii 的不可映射字符 public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

    我以前将ant java目标设置为:

     <javac encoding="ascii"...>
    

    比我有如下变化

    <javac encoding="iso-8859-1" ...> 
    

    这个问题已经解决了。

    【讨论】:

      【解决方案4】:

      Ant 本身不能设置系统属性,但如果你真的想,你可以编写一个 java 程序来设置系统属性,然后在 Ant 中执行。

      【讨论】:

        猜你喜欢
        • 2014-06-01
        • 2018-10-26
        • 2011-07-11
        • 1970-01-01
        • 1970-01-01
        • 2012-07-31
        • 1970-01-01
        • 2014-10-30
        • 1970-01-01
        相关资源
        最近更新 更多