低级错误 System.setProperty 值为空时引发空指针
背景
一个简单的通过配置设置到系统环境变量,然后程序继续用这个配置的方法,理论上配置key不存在应该不至于出错才对。
结果修改配置后程序起动不了了,怎么回事呢?本文记录这个低级错误。
配置用法
维护的 properties 配置文件,然后读取后再设置到 Java 的环境变量中,下面这样:
public static void main(String[] args) {
Properties properties = new Properties();
System.setProperty("test", properties.getProperty("test"));
}
运行时空指针了:
加固
这个老古董的项目,这种低级问题真是奇怪。要不就直接用 Properties 配置里面来获取配置,要不就设置一个默认值呗。理论上配置文件里面可以没有这一项配置的,没有的话,程序能正常启动才行。
因为这几项是关于 Kafka 认证配置的,有些情况下可能就是没有认证配置,运维最简单的方法就是直接注释掉这些配置,程序依然能正常启动才对,而不应该强制要求配置里面必须有这个配置但是值为空。这种黑盒程序谁知道呢!
System.setProperty
值为 null 的时候竟然引发空指针,确实没想到过!