J'ai écrit un simple programme Java avec l'éditeur de texte gedit
.
public class Example{
public static void main (String args [])
{
System.out.println("hi yaar");
}
}
Lorsque j'ai essayé de le compiler sur le terminal, cela a généré beaucoup d'erreurs et je ne sais pas pourquoi. C'est censé fonctionner.
Voici les erreurs:
arvind@arvind-HP-Pavilion-g6-Notebook-PC:~/Documents$ javac Example.Java
Example.Java:1: error: illegal character: \65279
public class Example{
^
Example.Java:1: error: class, interface, or enum expected
public class Example{
^
Example.Java:2: error: class, interface, or enum expected
public static void main (String args [])
^
Example.Java:5: error: class, interface, or enum expected
}
^
4 errors
J'ai essayé de chercher sur beaucoup de forums, mais je n'ai pas trouvé de réponse. Comment puis-je résoudre ça?
Toute aide appréciée.
Merci.
illegal character: \65279
, cela ressemble à un problème d'encodage.
file -bi Example.Java
javac
, par ex. javac -encoding UTF-8 Example.Java
N'oubliez pas non plus que le nombre décimal 65279 correspond à la valeur hexadécimale FEFF. Ce qui est connu sous le nom Unicode Byte Order Mark (BOM). En UTF-8, ces informations sont trompeuses, car il s’agit toujours d’un flux de 8 bits et non de 16 bits.
javac
ne peut pas gérer cela. Utilisez donc un autre éditeur, qui ne fait pas un tel traitement cruel.
BTW: Utilisez mieux un IDE comme Eclipse ou netbeans pour la programmation en Java. Cela peut vous protéger de certains problèmes subtils (par exemple, le codage des fichiers de propriétés doit être en latin-1).
Si vous utilisez un IDE, la compilation du code ne pose aucun problème. Vous écrivez manuellement le code (bloc-notes, bloc-notes ++), utilisez l'encodage encoder en UTF-8, puis vous compilez le code.
Sinon, utilisez:
javac -encoding UTF8 yourclassname.Java
Ce caractère supplémentaire sera généralement au début du premier mot de la doc.
Dans mon code, tous les mots de la doc sont stockés dans le tableau Word [].
Nous pouvons ignorer ce personnage en utilisant:
if((int)Word[0].charAt(0)==65279)
Word[0]=Word[0].substring(1);