对于那些从Eclipse迁移到IntelliJ或相反的人,这里是使用属性文件或其他资源文件时的提示。
它令人发疯(花了我一整个晚上的时间才能弄清楚),但是当您要从IDE本地运行或在调试过程中查找资源/属性文件时,两种IDE的工作方式却大不相同。(打包为.jar也是完全不同的,但是记录更好。)
假设您的代码中有一个相对路径引用,如下所示:
new FileInputStream("xxxx.properties");
(如果您要使用不希望与JAR一起打包的env特定.properties文件,这将很方便)
智力
(我使用13.1,但可能适用于更多版本)
文件xxxx.properties必须位于项目ROOT的PARENT dir中,以便在运行时像在IntelliJ中一样被拾取。(项目根目录是/ src文件夹所在的位置)
蚀
当xxxx.properties文件位于项目ROOT本身时,Eclipse感到很高兴。
因此,IntelliJ希望像这样被引用时.properties文件比Eclipse高1级!
当您在导出的.jar中具有同一行代码(new FileInputStream(“ xxxx.properties”);)时,这也会影响执行代码的方式。如果您想变得敏捷并且不想将.properties文件与jar打包在一起,则必须执行如下所示的jar,以便从命令行正确引用.properties文件:
出口智库
java -cp "/path/to_properties_file/:/path/to_jar/some.jar" com.bla.blabla.ClassContainingMainMethod
日食出口罐
java -jar some.jar
Eclipse导出的可执行jar只是希望引用的.properties文件位于与.jar文件所在位置相同的位置