HelloWorld.java:1: 需要为 class、interface 或 enum
锘缝ublic class HelloWorld{
^
1 错误
锘缝ublic class HelloWorld{
^
1 错误
这个错误出现的原因主要是在中文操作系统中,使用一贯的“javac HelloWorld.java”方式编译UTF-8(带BOM)编码的.java源文件,在没有指定编码参数(encoding)的情况下,默认是使用GBK编码。当编译器用GBK编码来编译UTF-8文件时,就会把UTF-8(带BOM)编码文件的文件头的占3个字节的头信息,按照GBK中汉字占两个字节、英文占1个字节的特性解码成了“乱码”的两个汉字。这个源文件应该是用记事本另存存为UTF-8编码造成的。
但是依然会有错误,提示“HelloWorld.java:1: 非法字符: \65279。
这是因为.java对于UTF-8编码,只识别UTF-8(不带BOM)那种。而记事本只支持保存文件为带签名的UTF-8,那有没有办法解决呢?
当然是有的,那就是使用EmEditor、EditPlus、UltraEdit或Notepad++之类的工具另存为UTF(不带BOM)(区别于带UTF + BOM)的编码文件。这时候使用“javac -encoding "UTF-8" HelloWorld.java”,就没有上述编码问题了。
也许有人会说,“我干脆都用GBK不就行了吗,为什么还要用UTF-8呢?”