我有使用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属性并为每个javac语句设置encoding =“$ {foo}”,但我试图避免这种情况。
答案 0 :(得分:67)
如果你有以特定方式编码的文件,最好告诉javac,而不是强迫整个JVM使用特定的编码。由于这个原因,javac task有一个编码属性。
<javac srcdir="${src.dir}" destdir="${build.classes.dir}" encoding="iso-8859-1" />
但实际上,您应该将源文件转换为UTF-8。在UTF-8中,一切都味道更好。 :)
答案 1 :(得分:33)
一些选择:
-Dfile.encoding=iso-8859-1
添加到您的ANT_OPTS
环境变量<presetdef>
设置所有<javac>
次调用的默认值答案 2 :(得分:3)
在更改构建文件之前,我收到如下的java编译错误。
ApplicationConstant.java:73:错误:编码ascii的不可映射的字符
// Load .svg image
airplane->load("AirplaneTopDown.svg");
// Downsize image
airplaneSmall = airplane->scaled(120, 120,Qt::KeepAspectRatio);
// Rotate image by trans
airplaneSmall = airplaneSmall.transformed(trans);
// Draw image and center at a certain screen position
painter.drawImage(airplaneX-airplaneSmall.width()/2,airplaneY-airplaneSmall.height()/2,airplaneSmall);
当我曾经将ant java target作为:
时,我遇到了这个错误public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";
比我改变如下
<javac encoding="ascii"...>
这个问题已经解决了。
答案 3 :(得分:1)
Ant本身不能设置系统属性,但是如果你真的想要,你可以编写一个设置系统属性的java程序,并从Ant中执行。