java 路径问题
jar包内的程序想要用“相对路径”读取包内的xml文件,读取不到.
jar包的结构如下:
client.jar
- app/reader.class
- app/template.xml
由于jar不是文件夹,因此对于包内的东西来说,没有所谓“绝对路径“,要读取在包内文件只能用“相对路径”。那么,是相对“谁”呢?在此程序
中,reader.class负责调方法读取template.xml, 使用的方法是用File("路径")建立一个文件对象,然后读取.
一开始我用的文件路径是 "../template.xml", 这是相对reader.class的文件位置. 但是事实证明,并不能这么弄。
根据API上说的,File的相对路径是相对"current working directory", 经过测试:
1.在eclipse下当前项目的根目录
2.而在unix命令行下是“相对”当前所在的目录
如果想要读取jar包内的文件,用File方式加载是不现实的,只能采用classloader加载方式,外加考虑web的多线程因素,应该用此方法加载:
Thread.getCurrentThread().getClassLoader().getResourceAsStream(String filePath)
此文件路径是什么呢? 我们知道, classloader从CLASSPATH定义的地方加载资源, 我们所要做的就是把jar包加到classpath中,然后filePath就应该是xml文件相对jar包根目录的路径:app/template.xml
浙公网安备 33010602011771号