2009-08-27 101 views
45

我已經有了iso-8859-1編碼的java源文件。當我運行ant時,我得到「警告:用於編碼UTF-8的不可映射字符」。如果我運行ant -Dfile.encoding = iso-8859-1或將encoding =「ISO-8859-1」添加到每個javac語句,我可以避免這種情況。如何在ant的build.xml中設置-Dfile.encoding?

有沒有辦法在build.xml中全局設置屬性? < property name =「file.encoding」value =「ISO-8859-1」>不起作用。我知道我可以爲每個javac語句添加一個foo = ISO-8859-1屬性並將encoding =「$ {foo}」,但我試圖避免這種情況。

+0

這個問題應該同時在四個地方解決:http://stackoverflow.com/a/34225997/715269 – Gangnus 2015-12-11 14:40:47

回答

31

有幾個選項:

  1. 添加-Dfile.encoding=iso-8859-1ANT_OPTS環境變量
  2. 使用<presetdef>設置默認爲所有<javac>調用的編碼
1

Ant本身不能設置系統屬性,但是如果你真的想,你可以編寫一個java程序來設置系統屬性,並在Ant中執行它。

61

如果你有文件特別是,最好告訴javac,而不是強制整個JVM使用特定的編碼。由於這個原因,javac task具有編碼屬性。

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

但實際上,您應該只將源文件轉換爲UTF-8。 UTF-8中的所有東西味道都更好。 :)

+1

即使您將內容轉換爲UTF-8,您有時也必須擁有一個乾淨的環境(LC_ALL = C ),那裏非常方便。 – user1050755 2012-08-16 06:40:35

2

在更改構建文件之前,我得到像下面的java編譯錯誤。

ApplicationConstant.java:73:錯誤:用於編碼ASCII字符不可映射 public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

我有遇到此錯誤時我曾經有螞蟻的java目標爲:

<javac encoding="ascii"...> 

比我如下更改

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

此問題得到解決。