Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 部署的战争可以';无法访问文件_Java_Spring_Tomcat_War - Fatal编程技术网

Java 部署的战争可以';无法访问文件

Java 部署的战争可以';无法访问文件,java,spring,tomcat,war,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

我有一个spring应用程序,我正在尝试使用以下代码访问json文件:

    try (FileReader reader = new FileReader("parameters.json")) {
        Object obj = jsonParser.parse(reader);
        parameterList = (JSONArray) obj;
    }

我已经将parameter.json文件放在了项目文件夹中,我正在通过rest api访问angular应用程序中的文件数据,当我在本地机器上运行应用程序时,效果很好,但是当我在tomcat上部署war文件时,我的应用程序无法加载该文件,我应该将parameter.json文件放在tomcat上的其他地方,还是最好的解决方案。

尝试将该文件放在spring项目的resources文件夹下。您应该能够从该位置访问该文件。

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

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

然后,您可以使用一个Spring实用程序类,或者访问该文件。不过,最简单的方法可能是将属性放在.properties文件(默认文件名application.properties)中,并使用Spring的注释访问这些值:

@Value("${some.value.in.the.file}")
private String myValue;
您也可以使用其他文件名,方法是:


确保您的parameters.josn文件名在代码中完全相同。 将parameters.json文件移到resources文件夹中,然后使用带有文件名的类路径

 try (FileReader reader = new FileReader("classpath:parameters.json")) {
   Object obj = jsonParser.parse(reader);
   parameterList = (JSONArray) obj;
 }

FileReader正在寻找一个完整的文件系统,就像您计算机上的文件系统一样,但是当您部署WAR时,却没有一个,因此您必须使用不同的方法。您可以像这样直接从src/main/resources文件夹获取文件

InputStream inputStream = getClass().getResourceAsStream("/parameters.json");

您的项目文件夹中哪里有parameter.json?您的代码显示parameters.json,而您的描述显示parameter.json。可能是输入错误?嗨,我如何在resources文件夹中写入文件?我可以修改resources文件夹中的文件吗?当应用程序打包到WAR时,您应该使用外部文件来实现此目的。您不能在war/jar运行时修改它。当应用程序打包到war时,我可以修改resources文件夹中的文件吗?不幸的是,您必须解包并重新打包jar/war。您是否正在寻找一种无需重新部署应用程序即可交换文件的方法?您可以这样做,但我认为您仍然需要重新部署:此页面可能会有所帮助:当应用程序打包为WAR时,我是否可以修改resources文件夹中的文件
InputStream inputStream = getClass().getResourceAsStream("/parameters.json");