我正在尝试从“UserList.java”类中读取“User.json”文件,但我不能。我正在 JSP/Servlet 中进行开发,我不喜欢在服务器文件夹 (TOMCAT) 的上下文中阅读。
我尝试一下:
//User.java
Gson gsonObject = new Gson();
String res = gsonObject.toJson(new FileReader("User.json"));
System.out.println("User ==> JSON " + res);
结果:
java.io.FileNotFoundException: User.json
Json 文件:
//User.json
{
"user": {
"type": "text"
},
"name": {
"type": "text"
},
"password": {
"type": "password"
},
"characterName": {
"type": "combo",
"id": "rolls"
}
}
套餐如下:
br.com.servtech.servlet.list ==> UserList.java
br.com.servtech.model.json ==> User.json
最佳答案
FileReader
构造函数采用文件名称作为参数。您向它传递一个相对文件名,因此 Java 会在文件系统的当前目录中查找它,该目录是启动用于启动 Tomcat 的 java 命令的目录。
不仅路径不正确,而且您甚至不想使用文件,因为您想要读取的是资源,它位于war 文件,甚至在 war 文件内的 jar 文件内。
由于类加载器,您希望使用此资源,因为必须使用与 .class 文件相同的加载机制(基于 war、jar 和包)找到此资源。因此你应该使用
InputStream in = UserList.class.getResourceAsStream("/br/com/servtech/model/json/User.json");
关于java - 如何读取不同包中的资源文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21067484/