48

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

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

4

4 回答 4

73

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

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

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

于 2009-08-27T07:42:22.297 回答
37

几个选项:

  1. 添加-Dfile.encoding=iso-8859-1到您的ANT_OPTS环境变量
  2. 用于<presetdef>为所有<javac>调用设置默认值
于 2009-08-27T07:37:19.980 回答
3

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

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

I have encounter this error when I used to have ant java target as:

 <javac encoding="ascii"...>

Than i have change as below

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

This issue got solved.

于 2015-10-14T15:13:12.037 回答
1

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

于 2009-08-27T07:26:14.030 回答