首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

怎么在jar文件里读取外部配置文件

2012-01-24 
如何在jar文件里读取外部配置文件目录结构是有两个文件在同一个目录里一个是go.jar,一个是config.xmlgo.ja

如何在jar文件里读取外部配置文件
目录结构是有两个文件在同一个目录里
一个是go.jar,一个是config.xml
go.jar的入口函数是里面默认包里的go.class里的

我在go.class里有这样的代码: 
Document document = new SAXReader().read(go.class.getClassLoader().getResourceAsStream("config.xml"));
结果是
Nested exception: java.net.MalformedURLException
  at java.net.URL.<init>(Unknown Source)
  at java.net.URL.<init>(Unknown Source)
  at java.net.URL.<init>(Unknown Source)


如果用"./config.xml"和"../config.xml"都是一样的.

而以前用new File("./config.xml")居然可以读到,但是只能在WINDOWS下,LINUX下就不行了

我需要一种能在WINDOWS和LINUX下都能读取的方法

[解决办法]
linux的我不清楚.../_\
windows上你是不是double click那個jar包啊,這樣的話你程序context的"."就意味着你jar包的當前目錄,如果你在cmd中以(java,javac等沒有加入到%path%中)java的存放目錄以java -jar來運行你的jar包,那麼"."就意味是java.exe的目錄,可以以config.xml的絕對路徑來讀取吧
obj.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()
[解决办法]
linux的读取命令和windows不一样,要写层叠式的路径+读取命令,而且你的文件权限也要达到读的标准,root就不用不说了
[解决办法]
一种方法是你在程序中打印 System.getproperty("user.dir");看在哪个目录下面
[解决办法]
go.class.getClassLoader().getResourceAsStream("config.xml")这个语句执行成功了没有?

将这个文件config.xml 放在一个classpath的路径中,然后用go.class.getClassLoader().getResourceAsStream("/config.xml")应该可以在linux或windows成功读到数据。
[解决办法]
学习..

热点排行