今天遇到一个问题,有ultraedit编辑了一个java文件,上传到svn中。在linux服务器上重新部署此JAVA应用时,应用打包时日志报错:
[INFO] Compilation failure
/home/admin/projects/push/hsf/impl/Actions.java:[1,0] illegal character: \65279
结果查了很久资料,才发现是因为:
这个java文件定义的格式是utf-8的,在windows下编辑时保存为utf-8编码,上传到linux下编译出错
原因:
windows对UTF-8文件进行了特殊处理,即对UTF-8的文本文件自动在前面加了三个byte(EF BB BF);javac编译时,读到最前面这三个byte时报错 illegal character: \65279
unix/linux 下标准的UTF-8文件无此三个byte
解决方式:16进制文本编辑工具删掉文件头附加的byte即可
具体可以查看: