java工具包在读取配置文件方面的问题,纠结啊
最近在编写一个供别人调用的工具包,里面需要用到配置文件,但是在获取配置文件路径这一块被恶心到了,之前采用了ResourceBundle,假设调用我的工具包的程序打包后的文件名为a.jar,那么我把我的配置文件和a.jar放在一个目录,始终就是读不到,无奈换成了Properties,通过ClassLoader.getSystemResource("").getPath() + "config.properties";来获取我的配置文件,程序在myEclipse里面运行的很正常,每次只要把配置文件放在src下面就可以了,但是一旦打包之后,就让我有些晕乎了,能不能找到配置文件完全取决于调用我的工具包的程序,有些程序需要在打包时选择Extract required libraries into generated JAR 才能读到我的配置文件,有的则需要选择Package required libraries into generated JAR才可以,我的配置文件一直和主调程序的可执行jar文件放在同一个目录下,按照我的思路来说,不管在哪里执行ClassLoader.getSystemResource("").getPath(),都会获得当前可运行jar文件所在的路径,那我把我的配置文件和可执行jar文件放在一个目录中应该是正确的啊,纠结死了,请教大神,这到底是什么原因呢,你们一般在写供别人调用的工具包的时候,是怎么读取配置文件的呢,怎么才有实现像ehcache.jar读取自己的配置文件ehcache.xml那样稳定而不出问题呢? --------------------编程问答-------------------- 把配置文件放在包里,打成jar包在哪都能读 --------------------编程问答-------------------- +10086 --------------------编程问答-------------------- 你具体什么需求呢?只要jar包和配置文件在同一目录? --------------------编程问答-------------------- 可以用System.getProperty("user.dir")获取当然运行环境路径,配置文件放在下面就行了。 --------------------编程问答-------------------- 读取配置文件,你可以搜下,有很多方式的. --------------------编程问答-------------------- 这样修改配置文件不就变得不方便么 --------------------编程问答-------------------- System.getProperty("user.dir")获取的是当前用户工作目录,这个很不好控制的 --------------------编程问答--------------------那就放在src同级目录下啊,打成jar包,配置文件和jar放在同级目录就可以了,之前我也是这么干的 --------------------编程问答--------------------
这样修改配置文件不就变得不方便么
把配置文件放在包里,打成jar包在哪都能读
String filePath = new File(getClass().getPropectionDomain().getCodeSource().getLocation().getFile()).getParentFile().getAbsolutePath()+配置文件名;
这是以前处理配置文件放到jar相同目录下时,无法读取配置文件,我在网上看到某位大牛提供的方法。经过本人测试,此方法确实可行。
--------------------编程问答--------------------
那怎么不方便了?
这样修改配置文件不就变得不方便么
把配置文件放在包里,打成jar包在哪都能读
补充:Java , Java SE