当前位置:编程学习 > JAVA >>

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包在哪都能读 --------------------编程问答--------------------
引用 1 楼 msj100ff 的回复:
把配置文件放在包里,打成jar包在哪都能读
+10086 --------------------编程问答-------------------- 你具体什么需求呢?只要jar包和配置文件在同一目录? --------------------编程问答-------------------- 可以用System.getProperty("user.dir")获取当然运行环境路径,配置文件放在下面就行了。 --------------------编程问答-------------------- 读取配置文件,你可以搜下,有很多方式的. --------------------编程问答--------------------
引用 1 楼 msj100ff 的回复:
把配置文件放在包里,打成jar包在哪都能读
这样修改配置文件不就变得不方便么 --------------------编程问答--------------------
引用 4 楼 fangmingshijie 的回复:
可以用System.getProperty("user.dir")获取当然运行环境路径,配置文件放在下面就行了。
System.getProperty("user.dir")获取的是当前用户工作目录,这个很不好控制的 --------------------编程问答--------------------
引用 6 楼 CS_Xiaochao 的回复:
Quote: 引用 1 楼 msj100ff 的回复:

把配置文件放在包里,打成jar包在哪都能读
这样修改配置文件不就变得不方便么


那就放在src同级目录下啊,打成jar包,配置文件和jar放在同级目录就可以了,之前我也是这么干的 --------------------编程问答--------------------
引用 6 楼 CS_Xiaochao 的回复:
Quote: 引用 1 楼 msj100ff 的回复:

把配置文件放在包里,打成jar包在哪都能读
这样修改配置文件不就变得不方便么
那怎么不方便了? --------------------编程问答-------------------- 参考下,我之前研究了下这个问题:http://blog.csdn.net/withiter/article/details/11924095 --------------------编程问答-------------------- 如果楼主把配置文件放到可执行jar相同目录下,那么我可以告诉你一个写法。
String filePath = new File(getClass().getPropectionDomain().getCodeSource().getLocation().getFile()).getParentFile().getAbsolutePath()+配置文件名;
这是以前处理配置文件放到jar相同目录下时,无法读取配置文件,我在网上看到某位大牛提供的方法。经过本人测试,此方法确实可行。
--------------------编程问答--------------------
引用 9 楼 Gaowen_HAN 的回复:
Quote: 引用 6 楼 CS_Xiaochao 的回复:

Quote: 引用 1 楼 msj100ff 的回复:

把配置文件放在包里,打成jar包在哪都能读
这样修改配置文件不就变得不方便么
那怎么不方便了?
那样每次修改不都还要解压包—>修改—>再打包,这样操作,如果对于一个外行人是很不愿意接受这样的方法的,或者说我没有理解你的意思?
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,