无法在WEB-INF位置加载文件

时间:2017-09-15 16:57:57

标签: java maven file classloader

我的战争中有一个json文件位于以下位置

   WEB-INF/classes/META-INF/jsonFolder/file.json

我正在尝试使用路径和以下方法来加载文件。

public static File deserializeJSONFile() throws IOException {
    File file = null;
    OutputStream outStream = null;
String jsonPath = "jsonFolder/file.json";
try (InputStream inputStream = Thread.currentThread().getContextClassLoader()
            .getResourceAsStream(jsonPath)) {
        in = inputStream;
        if (in != null) {
            byte[] bufferArray = new byte[in.available()];
            in.read(bufferArray);
            file = new File("tempJsonFile.json");
            outStream = new FileOutputStream(file);
            outStream.write(bufferArray);
        }
    } finally {
        if (outStream != null) {
            outStream.close();
        }
    }
    if (null == in) {
        String errorMessage = "JSON file: " + jsonPath + " could not be loaded";
        FileNotFoundException fileNotFoundException = new FileNotFoundException(errorMessage);
        logger.error(errorMessage, fileNotFoundException);
        throw fileNotFoundException;
    }
    return file ;
  }

我所有的单元测试都通过了。在部署我的应用程序时,我看到jsonFolder / file.json找不到文件异常。当我跟踪它正在搜索的位置时,它正在查看,

 C:\Program Files\eclipse-mars\jsonFolder\file.json

这是不正确的。我尝试了不同的类加载器方法,但它没有帮助。一条规则是我不应该修改pom.xml来使其工作。我该如何加载文件?

1 个答案:

答案 0 :(得分:0)

  

我的战争中有一个json文件位于以下位置

WEB-INF->类 - > META-INF-> jsonFolder-> file.json

因此它作为资源的名称是This is fixed now and should be in 1.0.2 - https://github.com/sbt/sbt/pull/3507/commits/b6a3ca19373c2ffa17c5660fa74a9a4204948b6e You can type stty echo to restore window or use - https://github.com/paulp/sbt-extras 。不是你的代码中的内容。