当前项目打包成 jar 执行
然后我在 jar 同目录下放了一个 resource 目录,下面放了配置文件
使用
InputStream is = MyClass.class.getClassLoader().getResourceAsStream("resouce/myfile.properties")
这种方式,无法读取到文件
然后,我尝试了一下
String path = MyClass.class.getClassLoader().getResource("").getPath();
获取不到路径
请大佬指点一下,谢谢。
1
putaozhenhaochi 2020-05-28 06:31:09 +08:00
你这是读取 jar 包外部配置了吧。
网上找的一段代码 ,你参考下 读取 jar 包内配置文件: InputStream in = this.getClass().getClassLoader().getResourceAsStream("/configfilename.properties 读取 jar 包外配置文件: String filePath = System.getProperty("user.dir") + "/conf/configfilename.properties"; InputStream in = new BufferedInputStream(new FileInputStream(filePath)); |
2
WhereverYouGo 2020-05-28 08:46:55 +08:00
如果是 Spring:
ClassPathResource resource = new ClassPathResource("resouce/myfile.json"); File file = resource.getFile(); |
3
xiaofan2 2020-05-28 09:03:45 +08:00
InputStream is = MyClass.class.getClassLoader().getResourceAsStream("resouce/myfile.properties")
这个改成 InputStream is = MyClass.class.getClassLoader().getResourceAsStream("/myfile.properties") 这样读取的是你 jar 包内 classes 目录下的 myfile.properties 文件 |
4
NoKey OP @putaozhenhaochi 实际上目前就只能使用先读取文件,在得到流的方式。不过没搞明白,为啥直接运行 jar 得不到 classpath
|
5
BBCCBB 2020-05-28 09:28:04 +08:00
是 Class.getResourceAsStream 和 ClassLoader.getResourceAsStream 的区别, 你搜一下,看懂就能解决了 🐶
|
6
holddie 2020-05-28 09:34:37 +08:00
InputStream is = MyClass.class.getClassLoader().getResourceAsStream("resouce/myfile.properties")
引用你这句话,你的 resource 单词少个 r |
7
RJH 2020-05-28 10:04:28 +08:00
Spring 有现成的类,以下代码就可以了
// 读取 resource 目录下的 test.txt 文件,打成 jar 包也可以读取到 Resource resource = new ClassPathResource("/test.txt"); InputStream resourceInputStream = resource.getInputStream(); |
8
egfegdfr 2020-05-28 10:28:22 +08:00
你这个读取的是 jar 外的配置文件。需要注意文件路径
|
9
falsemask 2020-05-29 20:59:34 +08:00
getResourceAsStream 只能获取编译后的路径下的文件吧
|