部署的WAR无法访问文件

时间:2020-07-05 18:55:11

标签: java spring tomcat war

我有一个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上的其他位置还是最佳解决方案。

4 个答案:

答案 0 :(得分:2)

您的问题表明您正在尝试访问名为 parameter.json 的文件,而代码摘录显示了 parameter s .json 。也许这种差异表明您的源代码中有错字?

如果没有,则有多种方法可以在Spring中从类路径访问文件,每种方法的第一步都是确保文件位于项目的 src / main / resources 目录中。 / p>

然后,您可以使用Spring实用程序类ClassPathResourceResourceLoaderResourceUtils之一访问文件。不过,最简单的方法可能是将属性放入 .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");