48

iso-8859-1 エンコーディングの Java ソース ファイルがあります。antを実行すると、「警告: UTF-8 をエンコードするためのマップできない文字です」というメッセージが表示されます。ant -Dfile.encoding=iso-8859-1を実行するか、 encoding="ISO-8859-1"を各 javac ステートメントに追加すると、これを回避できます。

build.xml 内でプロパティをグローバルに設定する方法はありますか? <property name="file.encoding" value="ISO-8859-1">は機能しません。foo=ISO-8859-1 プロパティを追加して encoding="${foo}" を各 javac ステートメントに設定できることはわかっていますが、それを避けようとしています。

4

4 に答える 4

73

特定の方法でエンコードされたファイルがある場合は、JVM 全体に特定のエンコードを使用するよう強制するよりも、javac にそのように伝えるのがおそらく最善です。このため、javac タスクには encoding 属性があります。

<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";

Ant Javaターゲットを次のように使用していたときに、このエラーが発生しました。

 <javac encoding="ascii"...>

私は以下のように変更しました

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

この問題は解決しました。

于 2015-10-14T15:13:12.037 に答える
1

Ant 自体はシステム プロパティを設定できませんが、どうしてもそうしたい場合は、システム プロパティを設定する Java プログラムを作成し、それを Ant 内から実行できます。

于 2009-08-27T07:26:14.030 に答える