
当前项目打包成 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 只能获取编译后的路径下的文件吧 |