Não é possível compilar o código java [Unicode Byte Order Mark 65279]

1

Eu escrevi um programa Java simples com o editor de texto gedit .

public class Example{
    public static void  main (String args [])
    {
    System.out.println("hi yaar");
    }
}

Quando tentei compilá-lo no terminal, ele causou muitos erros e não sei por quê. Deveria funcionar.

Aqui estão os erros:

arvind@arvind-HP-Pavilion-g6-Notebook-PC:~/Documents$ javac Example.java

Example.java:1: error: illegal character: 279

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

Eu tentei pesquisar em muitos fóruns, mas não encontrei uma resposta. Como posso resolver isso?

Qualquer ajuda apreciada.

Obrigado.

    
por arvind 12.03.2013 / 17:06

3 respostas

2

illegal character: 279 , isso parece um problema de codificação.

  1. Verifique a codificação do seu arquivo de código-fonte: file -bi Example.java
  2. Use a codificação como opção para javac , por exemplo %código%

Tenha também em mente que o decimal 65279 é hex FEFF. Que é conhecido como a marca de ordem de bytes Unicode (BOM). Em UTF-8 esta informação é enganosa, porque é sempre um fluxo de 8 bits e não de 16 bits.

javac -encoding UTF-8 Example.java não consegue lidar com isso. Portanto, use outro editor, que não está fazendo isso.

BTW: Use melhor um IDE como eclipse ou netbeans para programar em java. Isso pode proteger você de alguns problemas sutilmente (por exemplo, a codificação de arquivos de propriedades deve ser latina-1).

    
por H.-Dirk Schmitt 12.03.2013 / 17:15
0

Este caractere extra será normalmente no início da primeira palavra do documento.

No meu código, todas as palavras no documento são armazenadas na palavra da matriz [].

Podemos ignorar esse caractere usando:

   if((int)word[0].charAt(0)==65279)
         word[0]=word[0].substring(1);
    
por sudhan kumar 16.04.2013 / 19:44
0

Se você estiver usando um IDE, não há problema em compilar o código. Você escreve o código manualmente (notepad, notepad ++), usa codificação em UTF-8 e depois compila o código.

Caso contrário, use:

javac -encoding UTF8 yourclassname.java
    
por janardhan randhi 20.12.2017 / 12:36