闯祸了,我用了一个‘’操作符引发的线上Bug!

Java技术迷

共 1181字,需浏览 3分钟

 ·

2021-05-24 17:34

来源 | 小猪notebook(ID:gh_6e59bfc9acb6

一、发现问题

昨天下午四点多的时候,一位同事找到我说,我所负责的系统中修改机器状态的功能不可用了。我当时是感到非常开心的,因为摸了这么多天的鱼,终于有活干了!
于是我在正式环境发了一个请求给出问题的接口,谷歌浏览器按F12,发现接口报错了,Http的返回码是500,很显然这是服务端报错。

然后我查看报错的信息,发现:


原来报错的原因是:
'<>' operator is not allowed for source level below 1.7
出错的代码是:
List<Server> serverList = new ArrayList<>;
很显然这是与JDK版本的问题有关。

二、解决问题

由于这行代码是我为了完成公司安全组的需求——记录所有写操作日志而写出来的,我是想把被修改了状态的Server的信息保存到一个List里面,然后将List记录到日志里。
当时在本地写完并测试通过后,是没有问题的,所以才发版上线。毕竟我本地的编译环境是JDK1.8,所以显然没有问题。但是到了线上,由于项目太老,其JDK低于1.7,就不支持在JSP页面里面使用'<>'了。
由于我担心修改了线上的JDK版本导致其他一些版本不兼容的Bug出现,就干脆把这行代码删掉了,换成了StringBuffer类去做Server的信息记录保存。测试通过后再发版上线,就把Bug解决了,日志记录也是正常且美观。

三、启发

这个Bug虽然没有造成重大损失,但它给了我一些启发。
在维护一个老项目的时候要考虑到老项目使用技术的版本与当前主流技术版本的兼容问题,对于Java开发者而言,特别是要弄清老项目的JDK版本,这对于以后写出少Bug的代码事半功倍。

1、Intellij IDEA这样 配置注释模板,让你瞬间高出一个逼格!
2、吊炸天的 Docker 图形化工具 Portainer,必须推荐给你!
3、最牛逼的 Java 日志框架,性能无敌,横扫所有对手!
4、把Redis当作队列来用,真的合适吗?
5、惊呆了,Spring Boot居然这么耗内存!你知道吗?
6、全网最全 Java 日志框架适配方案!还有谁不会?
7、Spring中毒太深,离开Spring我居然连最基本的接口都不会写了

点分享

点收藏

点点赞

点在看

浏览 21
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报