2009-08-27 6 views
45

Ich habe Java-Quelldateien mit ISO-8859-1-Codierung. Wenn ich ant ausführen, bekomme ich "Warnung: nicht mappbares Zeichen für die Codierung UTF-8". Ich kann dies vermeiden, wenn ich ant -Dfile.encoding = iso-8859-1 ausführen oder encoding = "ISO-8859-1" zu jeder javac-Anweisung hinzufügen.Wie setze ich -Dfile.encoding in der build.xml von ant?

Gibt es eine Möglichkeit, die Eigenschaft global in build.xml festzulegen? < Eigenschaft name = "file.encoding" Wert = "ISO-8859-1" > funktioniert nicht. Ich weiß, dass ich eine foo = ISO-8859-1-Eigenschaft hinzufügen und coding = "$ {foo}" zu jeder javac-Anweisung setzen kann, aber ich versuche das zu vermeiden.

+0

Das Problem sollte an vier Orten gleichzeitig gelöst werden: http://stackoverflow.com/a/34225997/715269 – Gangnus

Antwort

31

Einige Optionen:

  1. -Dfile.encoding=iso-8859-1
  2. auf Ihre ANT_OPTS Umgebungsvariable hinzufügen
  3. Verwendung <presetdef> Setup Standardeinstellungen für alle Ihre <javac> Anrufungen
1

Die Ant selbst kann keine Systemeigenschaften festlegen, aber wenn Sie das wirklich wollen, können Sie ein Java-Programm schreiben, das die Systemeigenschaft festlegt und das innerhalb von Ant ausführt.

61

Wenn Sie Dateien in einem codierten haben Auf besondere Weise ist es wahrscheinlich am besten, javac zu sagen, anstatt die ganze JVM dazu zu zwingen, eine bestimmte Kodierung zu verwenden. Die javac task hat aus diesem Grund eine Codierung Attribut.

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

Aber wirklich, sollten Sie nur die Quelldateien in UTF-8 konvertieren. In UTF-8 schmeckt alles besser. :)

+1

Auch wenn Sie den Inhalt in UTF-8 konvertieren, müssen Sie manchmal eine saubere Umgebung haben (LC_ALL = C) und da kommt das ziemlich praktisch. – user1050755

2

Bevor ich die Build-Datei ändere, bekomme ich Java kompiliert Fehler wie unten.

ApplicationConstant.java:73: Fehler: nicht zuzuordnenden Zeichen für die Codierung ascii public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

Ich habe diese Fehler auftreten, wenn ich ant java Ziel haben als:

<javac encoding="ascii"...> 

als ich ändern Sie als unten

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

Dieses Problem wurde gelöst.