从 Spring Boot 中的资源文件夹中读取文件

新手上路,请多包涵

我正在使用 Spring Boot 和 json-schema-validator 。我正在尝试从 resources 文件夹中读取一个名为 jsonschema.json --- 的文件。我尝试了几种不同的方法,但我无法让它工作。这是我的代码。

 ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("jsonschema.json").getFile());
JsonNode mySchema = JsonLoader.fromFile(file);

这是文件的位置。

在此处输入图像描述

在这里我可以看到 classes 文件夹中的文件。

在此处输入图像描述

但是当我运行代码时,出现以下错误。

 jsonSchemaValidator error: java.io.FileNotFoundException: /home/user/Dev/Java/Java%20Programs/SystemRoutines/target/classes/jsonschema.json (No such file or directory)

我在代码中做错了什么?

原文由 g3blv 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
1 个回答

在花了很多时间试图解决这个问题之后,终于找到了一个可行的解决方案。该解决方案使用了 Spring 的 ResourceUtils。应该也适用于 json 文件。

感谢 Lokesh Gupta 写得很好的页面: 博客

在此处输入图像描述

 package utils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.util.ResourceUtils;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
import java.io.File;

public class Utils {

    private static final Logger LOGGER = LoggerFactory.getLogger(Utils.class.getName());

    public static Properties fetchProperties(){
        Properties properties = new Properties();
        try {
            File file = ResourceUtils.getFile("classpath:application.properties");
            InputStream in = new FileInputStream(file);
            properties.load(in);
        } catch (IOException e) {
            LOGGER.error(e.getMessage());
        }
        return properties;
    }
}

回答评论中的一些问题:

很确定我使用 java -jar target/image-service-slave-1.0-SNAPSHOT.jar

查看我的 github 存储库: https ://github.com/johnsanthosh/image-service 找出从 JAR 运行它的正确方法。

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题