我有Spring Boot应用程序。我正在尝试读取资源文件夹中的json文件(使用类加载器)。我已经将我的应用程序部署在azure上,它给了我错误,不存在这样的文件,并且在我打印路径时,它给了我null。
答案 0 :(得分:0)
我试图创建一个简单的Maven项目来解决您的问题。
我的源代码结构如下。
simpleMavenProj
|-src/main/java/Hello.java
|-src/main/resources/hello.json
Hello.java
的内容如下。
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
public class Hello {
public static void main(String[] args) throws IOException {
InputStream resourceInputStream = null;
URL resourceURL = Hello.class.getClassLoader().getResource("resources/hello.json");
if(resourceURL == null) {
System.out.println("Get the InputStream of hello.json in IDE");
resourceInputStream = new FileInputStream(Hello.class.getClassLoader().getResource("").getPath()+"../../src/main/resources/hello.json");
} else {
System.out.println("Get the InputStream of hello.json from runnable jar");
resourceInputStream = Hello.class.getClassLoader().getResourceAsStream("resources/hello.json");
}
System.out.println();
StringBuilder builder = new StringBuilder();
BufferedReader br = new BufferedReader(new InputStreamReader(resourceInputStream));
String line = null;
while((line = br.readLine()) != null) {
builder.append(line+"\n");
}
br.close();
System.out.println(builder.toString());
}
}
还有hello.json
:
{
"hello":"world"
}
如果在IDE中进行开发,请运行代码,结果为:
Get the InputStream of hello.json in IDE
{
"hello":"world"
}
否则将生成可运行的jar文件,然后通过java -jar simpleMavenProj.jar
运行jar文件,结果是:
Get the InputStream of hello.json from runnable jar
{
"hello":"world"
}
希望有帮助。如有任何疑问,请随时告诉我。