位于jar包中的类如何读取该jar包中相同包目录下的配置文件内容?

时间:2023-01-15 09:13:20
一个类,其所属工程是会打包为一个jar包发行运行的,该类需要读取其所属包目录下的一个配置文件(也会一起打包到jar中)。该类不知道该jar包的最终名称和路径,也应该不需要知道。我记得Struts2似乎就有类似代码,但现在已经找不到了……

7 个解决方案

#1


占位学习

#2


相对位置应该知道吧?

#3


对啊,应该不需要知道最终名称和路径
直接可以处理的

项目中有这种情况,一个配置文件在包下,同包下的类直接读取,但是是同事写的,没细看

#4


getClassLoader().getResource("org/gjt/sp/jedit/icons/themes/tango/about.png");
getClassLoader().getResourceAsStream("org/gjt/sp/jedit/actions.xml");

jedit.jar中的文件。jedit.jar在classpath中

#5


引用 4 楼 huntor 的回复:
getClassLoader().getResource("org/gjt/sp/jedit/icons/themes/tango/about.png");
getClassLoader().getResourceAsStream("org/gjt/sp/jedit/actions.xml");

jedit.jar中的文件。jedit.jar在classpath中


getClassLoader()不是在任何类中都能调用的,不过我想办法找到了默认的ClassLoader,再采用这种方式,没有解决问题。由于我要读取的是properties文件,所以最终使用ResourceBundle解决了该问题

#6


Thread.currentThread().getContextClassLoader().getResourceAsStream("com/test/abc.properties");

#7


mark

#1


占位学习

#2


相对位置应该知道吧?

#3


对啊,应该不需要知道最终名称和路径
直接可以处理的

项目中有这种情况,一个配置文件在包下,同包下的类直接读取,但是是同事写的,没细看

#4


getClassLoader().getResource("org/gjt/sp/jedit/icons/themes/tango/about.png");
getClassLoader().getResourceAsStream("org/gjt/sp/jedit/actions.xml");

jedit.jar中的文件。jedit.jar在classpath中

#5


引用 4 楼 huntor 的回复:
getClassLoader().getResource("org/gjt/sp/jedit/icons/themes/tango/about.png");
getClassLoader().getResourceAsStream("org/gjt/sp/jedit/actions.xml");

jedit.jar中的文件。jedit.jar在classpath中


getClassLoader()不是在任何类中都能调用的,不过我想办法找到了默认的ClassLoader,再采用这种方式,没有解决问题。由于我要读取的是properties文件,所以最终使用ResourceBundle解决了该问题

#6


Thread.currentThread().getContextClassLoader().getResourceAsStream("com/test/abc.properties");

#7


mark