发现bug:
在服务器上部署后台服务并验证能够正常运行,但是一次修改配置重启后突然出现了一个空指针bug,部署的程序并没有改变
?
2.????定位bug:
空指针定位到一个变量,查找代码发现变量初始化来自于读取配置文件,但是检查配置文件中有正常配置相应值,所以无法找到原因。
后来在开发机器上调试服务都没有问题,只好重新部署服务到服务器,发现是能够正常运行。
比较两次部署的服务包,内容完全一致,唯独配置文件的二进制不同,使用十六进制查看配置文件,发现文件开头多出了3个字节的BOM头。
?
3.????解决bug:
使用文本编辑工具将配置文件的BOM头去掉后,重新启动服务,验证能够正常运行。
?
4.????分析bug:
??? ????<groupId>net.sunyijun</groupId>
??? ????<artifactId>resource-utils</artifactId>
使用该工具库读取配置可以兼容BOM头。具体用法详见README。
?
附BOM头规则:
00 00 FE FF = UTF-32, big-endian
FF FE 00 00 = UTF-32, little-endian
EF BB BF = UTF-8,
FE FF = UTF-16, big-endian
FF FE = UTF-16, little-endian
原文:http://xiaosunzhu.iteye.com/blog/2214416