最近在负责公司的运维工作,公司服务器是在LInux上部署的,需要在Jenkins发布项目。最近的迭代发布时,在Jenkins上构建项目遇到其中一个项目启动报错,报错信息如下:
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /root/.hudson/jobs/sv2-common-web/workspace/src/main/java/sv2/common/web/sso/interceptor/SsoLoginInterceptor.java:[1,0] error: illegal character: '\ufeff'
[ERROR] /root/.hudson/jobs/sv2-common-web/workspace/src/main/java/sv2/common/web/sso/interceptor/SsoLoginInterceptor.java:[1,9] error: class, interface, or enum expected
其中的一个Java文件编译报,报错原因是:illegal character: '\ufeff'
丢给百度之后,原来是UTF-8和UTF-8 BOM 之间的爱恨纠葛。当时在用Windows自带记事本在改动这个文件的时候,还特别注意了一下,另存为UTF-8,结果还是被坑了,一番百度后,结论:还是少触碰这个UTF-8 BOM,不知道啥时候就坑你一下。
解决方法:因为Windows自带的记事本,在存为UTF-8时,其实是存为UTF-8 BOM格式的,所以还是建议用IDE编辑文件,并且注意IDE的编码,或者网上推荐是用Notepad++进行编码更改,都可以解决这个问题。解决完文件编码问题,再次发布到服务器就没问题了。