我用文本编辑器编写了一个简单的 Java 程序gedit
。
public class Example{
public static void main (String args [])
{
System.out.println("hi yaar");
}
}
当我尝试在终端上编译它时,它抛出了很多错误,我不知道为什么。它应该可以工作。
错误如下:
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
我尝试搜索了很多论坛,但没有找到答案。我该如何解决这个问题?
任何帮助均感激不尽。
谢谢。
答案1
illegal character: \65279
,这听起来像是编码问题。
- 检查源代码文件的编码:
file -bi Example.java
- 使用编码作为选项
javac
,例如javac -encoding UTF-8 Example.java
还请记住,十进制 65279 是十六进制 FEFF。这被称为 Unicode 字节顺序标记 (BOM)。在 UTF-8 中,此信息具有误导性,因为它始终是 8 位而不是 16 位流。
javac
无法处理这个问题。所以请使用其他没有这种繁琐工作的编辑器。
顺便提一句:最好使用类似这样的 IDE蚀或者网豆用于 Java 编程。这可以保护您免受一些微妙的问题(例如,属性文件的编码必须是 latin-1)。
答案2
这个额外的字符通常位于文档第一个单词的开头。
在我的代码中,文档中的所有单词都存储在数组word[]中。
我们可以使用以下方法忽略该字符:
if((int)word[0].charAt(0)==65279)
word[0]=word[0].substring(1);
答案3
如果你用的是IDE,编译代码是没有问题的,你手动在(notepad,notepad++)里写代码,用UTF-8编码,然后编译代码。
否则使用:
javac -encoding UTF8 yourclassname.java