我有一个spring应用程序,并且我正在尝试使用以下代码访问json文件:
try (FileReader reader = new FileReader("parameters.json")) {
Object obj = jsonParser.parse(reader);
parameterList = (JSONArray) obj;
}
我已将parameter.json文件放在项目文件夹中,并且正在通过rest api从有角度的应用程序访问文件数据,当我在本地计算机上运行该应用程序但在部署了war文件放在tomcat上,我的应用程序无法加载该文件,应该将parameter.json文件放在tomcat上的其他位置还是最佳解决方案。
答案 0 :(得分:2)
您的问题表明您正在尝试访问名为 parameter.json 的文件,而代码摘录显示了 parameter s .json 。也许这种差异表明您的源代码中有错字?
如果没有,则有多种方法可以在Spring中从类路径访问文件,每种方法的第一步都是确保文件位于项目的 src / main / resources 目录中。 / p>
然后,您可以使用Spring实用程序类ClassPathResource,ResourceLoader或ResourceUtils之一访问文件。不过,最简单的方法可能是将属性放入 .properties 文件(默认文件名为 application.properties ),然后使用Spring的@Value访问值注释:
@Value("${some.value.in.the.file}")
private String myValue;
您还可以通过使用@PropertySource使用其他文件名:
@Configuration
@PropertySource(value = {"classpath:application.properties",
"classpath:other.properties"})
public class MyClass {
@Value("${some.value.in.the.file}")
private String myValue;
...
}
答案 1 :(得分:2)
确保您的parameters.josn文件名在代码中完全相同。 将您的parameters.json文件移到资源文件夹中,然后将类路径与文件名一起使用。
try (FileReader reader = new FileReader("classpath:parameters.json")) {
Object obj = jsonParser.parse(reader);
parameterList = (JSONArray) obj;
}
答案 2 :(得分:1)
尝试将文件放在spring项目中的resources文件夹下。您应该可以从该位置访问文件。
答案 3 :(得分:1)
FileReader正在寻找像您计算机上那样的成熟文件系统,但是在部署WAR时,没有文件系统,因此您必须使用另一种方法。您可以像这样直接从src / main / resources文件夹中获取文件
InputStream inputStream = getClass().getResourceAsStream("/parameters.json");