Java--Mac下终端运行.java文件需要class、interface或enum

在Windows系统下,可以在jdk安装的路径下面直接使用记事本边写一个Java文件,然后编译一下就可以在DOS控制台上运行,那么在Mac系统下也可以对其进行同样的操作,博主使用Mac自带的文本编辑工具编写了一个Hello.java文件,放在桌面上,编译运行时报错

javac Hello.java: 错误: 需要class, interface或enum,如下图

  

这时查询一下错误,才发现:

这个错误出现的主要原因是java文件的编码问题。

在中文操作系统中,使用一贯的“javac HelloWorld.java”方式编译UTF-8(带BOM)编码的.java源文件,在没有指定编码参数(encoding)的情况下,默认是使用GBK编码。当编译器用GBK编码来编译UTF-8文件时,就会把UTF-8(带BOM)编码文件的文件头的占3个字节的头信息,按照GBK中汉字占两个字节、英文占1个字节的特性解码成了乱码的两个汉字。这个源文件应该是用记事本另存存为UTF-8编码造成的。

对于非GBK及其子集编码(GB2312)的正确的源文件,编译方式为“javac -encoding "UTF-8" HelloWord.java”,这样代码错误的指定代码里就不会出现乱码的中文。

但是依然会有错误,提示“HelloWorld.java:1:非法字符: \65279

这是因为.java对于UTF-8编码,只识别UTF-8(不带BOM)那种。而记事本只支持保存文件为带签名的UTF-8,那有没有办法解决呢?

当然是有的,那就是使用EmEditorEditPlusUltraEditNotepad++之类的工具另存为UTF(不带BOM)(区别于带UTF + BOM)的编码文件。这时候使用“javac -encoding "UTF-8" HelloWorld.java”,就没有上述编码问题了。

也许有人会说,我干脆都用GBK不就行了吗,为什么还要用UTF-8呢?

这是因为UTF-8支持世界多种语言的文字,被世界多数国家接受,是国际通用编码,也是Java推荐使用的编码。Java集成开发环境Eclipse中默认编码就是UTF-8。如果使用GBK,尤其是做网站,在非汉语国家,将无法正常浏览。在信息化时代,国际交往日益频繁;做软件和网站,不能只着眼当前,也要为日后维护做优化、降低维护成本。

博主打开了一下Hello.java文件,发现此时已经出现了乱码,如下:


因此,博主使用EditPlus工具重新编写了一下Hello.java文件

并保存为UTF-8格式

  

这时候在桌面路径下编译一下,生成了.class文件,再运行一下就可以出现我们想要的代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值