我有一个java应用程序,我想加载 JSON 。我正在调用的 API 方法需要InputReader
,所以我尝试了以下代码:
ClassLoader classLoader = Assets.class.getClassLoader();
new InputStreamReader(classLoader.getResourceAsStream("data/clientJson.json")));
该文件位于“ data ”文件夹下的Assets
包中,但InputStreamReader
始终抛出异常,指出输入为Null
。
如果我将该文件移到该类旁边,并将Classloader
更改为引用它所使用的同一个类,而不是Assets
类。
我已尝试过名称路径的每个排列,但也无济于事。
答案 0 :(得分:1)
如果导入了其他Eclipse项目,并且数据/文件夹位于src /文件夹下(或者在其他项目中标记为类路径资源),那么它将起作用。我认为您首先需要验证Eclipse导入/导出关系和其他文件夹类路径是否正确。
如果您转到资产(在我的示例中为A)项目的属性,则资源/文件夹必须位于"订单和导出"之下。您可以在" Libraries"下添加它。 as"类路径文件夹"。资产项目必须是构建路径上的必需项目"。注意" classpath文件夹" A / src / main / resources上的图标。
答案 1 :(得分:0)
尝试
new InputStreamReader(getClass().getClassLoader().getResource("data/clientJson.json"));
编辑:
来自 http://docs.oracle.com/javase/7/docs/api/java/lang/ClassLoader.html
的静态网址 getSystemResource(String name)
//Find a resource of the specified name from the search path used to load classes.
BTW我总是使用.getInputStream();例如:
BufferedReader stream = new BufferedReader(new InputStreamReader(new FileInputStream(object.getInputStream()));