之前就遇到过问题,ScrollBar报错。这次是代码混淆后颜色不对,心里这个奇怪啊。刚开始以为是配置文件目录错了,于是进行了大范围的混淆屏蔽,最后定位到一个继承了BasicScrollBarUI的类。
那么这个类什么地方出问题了?
- 先检查了重载,清理了一部分代码,还是有问题。
- 一看类不大,干脆所有函数不混淆。这下正确了。
- 逐步减少函数屏蔽,最后发现是这个函数的影响:
public static javax.swing.plaf.ComponentUI createUI(javax.swing.JComponent);
又进行了一次屏蔽和混淆,确实这个函数影响。
- 搜索一下,所有代码中都没有没有调用。这更奇怪了:谁影响的?
- 一想这个类继承的,难道父类也有这样一个函数?一查,果然。
结论:子类实现这个函数后,把父类的同名函数屏蔽了;混淆后,再调用就是父类的同名函数,所以出错了。