2009-08-27 7 views
45

Ho i file sorgente java con codifica iso-8859-1. Quando eseguo formica, ottengo "warning: carattere unmappable per la codifica UTF-8". Posso evitare questo se corro -Dfile.encoding formica = iso-8859-1 o aggiungere encoding = "iso-8859-1" ad ogni affermazione javac.Come si imposta -Dfile.encoding all'interno di form.xml di ant?

C'è un modo per impostare la proprietà a livello globale entro build.xml? < nome della proprietà = valore "file.encoding" = "iso-8859-1" > non funziona. So che posso aggiungere un foo = ISO-8859-1 e impostare encoding = "$ {foo}" su ogni istruzione javac, ma sto cercando di evitarlo.

+0

Il problema dovrebbe essere risolto in quattro punti contemporaneamente: http://stackoverflow.com/a/34225997/715269 – Gangnus

risposta

31

Alcune opzioni:

  1. aggiungere -Dfile.encoding=iso-8859-1 alla variabile d'ambiente ANT_OPTS
  2. uso <presetdef> alle impostazioni di configurazione per tutti i tuoi <javac> invocazioni
1

Ant per sé non è possibile impostare le proprietà del sistema, ma se si vuole veramente, è possibile scrivere un programma Java che imposta la proprietà di sistema, ed eseguire che dall'interno Ant.

61

Se hai i file codificati in un In particolare, è probabilmente meglio dire a javac che piuttosto che forzare l'intera JVM ad usare una particolare codifica. javac task ha un attributo di codifica per questo motivo.

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

Ma in realtà, si deve solo convertire i file di origine in UTF-8. Tutto ha un sapore migliore in UTF-8. :)

+1

Anche se si convertono i contenuti in UTF-8, a volte è necessario disporre di un ambiente pulito (LC_ALL = C) e là viene molto utile. – user1050755

2

Prima di modificare il file sto ottenendo errore di compilazione java come qui di seguito costruire.

ApplicationConstant.java:73: errore: carattere unmappable per la codifica ASCII public static final String INVALID_MDTVERSION_SECOND = " This not compatible with the server’s Version";

ho incontrare questo errore quando usato per avere porta java ant come:

<javac encoding="ascii"...> 

di ho cambiare come sotto

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

Questo problema è stato risolto.

Problemi correlati