java ant character-encoding javac

java - ¿Cómo configuro-Dfile.encoding dentro de build.xml de ant?



character-encoding javac (4)

Tengo archivos de origen java con codificación iso-8859-1. Cuando ejecuto ant , me aparece "warning: carácter no intercambiable para codificar UTF-8". Puedo evitar esto si ejecuto ant -Dfile.encoding = iso-8859-1 o agrego encoding = "ISO-8859-1" a cada declaración javac.

¿Hay una manera de establecer la propiedad globalmente dentro de build.xml? <property name = "file.encoding" value = "ISO-8859-1"> no funciona. Sé que puedo agregar una propiedad foo = ISO-8859-1 y establecer encoding = "$ {foo}" a cada declaración javac, pero estoy tratando de evitar eso.


Algunas opciones:

  1. añada -Dfile.encoding=iso-8859-1 a su variable de entorno ANT_OPTS
  2. use <presetdef> para configurar los valores predeterminados de todas sus invocaciones <javac>

Ant no puede establecer las propiedades del sistema, pero si realmente lo desea, puede escribir un programa java que establezca las propiedades del sistema y ejecutarlas desde Ant.


Antes de cambiar el archivo de compilación, obtengo el error de compilación de Java como se muestra a continuación.

ApplicationConstant.java:73: error: carácter no reemplazable para codificar public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version"; ASCII public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

Me he encontrado con este error cuando solía tener ant java target como:

<javac encoding="ascii"...>

Que tengo cambio como abajo

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

Este problema se resolvió.


Si tiene archivos codificados de una manera particular, probablemente es mejor decirle a javac que en lugar de forzar a toda la JVM a usar una codificación particular. La tarea javac tiene un atributo de codificación por este motivo.

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

Pero en realidad, solo debes convertir los archivos de origen a UTF-8. Todo sabe mejor en UTF-8. :)