最近有个项目在部署时,出现了一个奇怪的问题:
本地调试都是正常的,部署到服务器后,就出现了找不到配置文件的报错,而配置文件经确认又都是存在的。折腾了一番后,发现元凶是服务器上的CLASSPATH环境常量
正常情况下,我们都是通过如下方式获取项目的class目录路径的:
XXX.class.getResource("/").getPath();
但是,如果系统中配置了CLASSPATH这个环境变量后,上述代码就变成了获取CLASSPATH中指定的路径!自然,系统也就找不到你新项目class目录下的配置文件了。。。
把CLASSPATH变量清空,一切正常!
曾经,我在一篇介绍Java环境变量的博客中,看到过这么一句话:“和环境变量有关的奇怪问题中,80%都是CLASSPATH这个环境变量引起的”,今天亲身体会,果然诚不欺我
其实,我们现在部署Java环境,没必要再配置CLASSPATH这个环境变量了(除特殊情况)。不配置JRE正常跑,配置了反而有坑,何必呢?