【发布时间】:2018-10-15 23:04:59
【问题描述】:
我正在使用 IntelliJ 和 Maven 开发一个 Java 项目,但在将 Json 文件加载和解析到其中时遇到了麻烦。我正在使用 Gson 进行解析。
这是导致问题的代码的sn-p:
public void parseSomething() {
Gson gson = new GsonBuilder().create();
//The Json file contains an array of objects, and I need to put it into a Vector
Type listType = new TypeToken<List<MyClass>>(){}.getType();
List<MyClass> something = new Vector<>();
try(Reader file = new FileReader("dir/myFile.json")){
something = gson.fromJson(file, listType);
} catch (IOException e) {
e.printStackTrace();
}
this.something = something; //this sets the attribute of the class
}
我正在使用这个方法来调试它:
public static void main( String[] args ) {
MyClass myClass = new MyClass();
myClass.parseSomething();
String debug = something.toString(); //I've already implemented a custom toString
System.out.println(debug);
}
FileNotFoundException 被抛出 try(Reader file = new FileReader("dir/myFile.json"))。
如果我的猜测是正确的,程序甚至没有进行解析,因为它找不到文件。
我尝试过的事情:
- 使用绝对路径(以及相对路径的细微变化,例如
src/main/resources/dir/myFile.json和resources/dir/myFile.json...)。 - 从 intelliJ 和 Maven 设置资源根。
- 使用其他方式读取文件,例如:
- 类加载器
String fileName = "dir/myFile.json"; ClassLoader classLoader = ClassLoader.getSystemClassLoader(); File file = new File(classLoader.getResource(fileName).getFile()); - InputStreamReader(我通过这种方式得到一个
NullPointerException)try(Reader reader = new InputStreamReader(myClass.class.getResourceAsStream("dir/myFile.json"))){...}
- 类加载器
您知道为什么找不到该文件吗?还有其他方法可以加载吗?
【问题讨论】:
标签: java json maven intellij-idea gson