使用ant构建读取java中的静态文件



我是ANT的新手,在处理需要通过Java代码读取的静态文件时遇到了一些问题。我有以下结构:

build
  main
    example
      resository
        SomeClass.class   
data
  data.json
src
  example
    repository
      SomeClass.java
test

在SomeClass.java中,我需要读取data.json文件,但在解析路径时出错。我认为它在某种程度上与ant有关。

public class SomeClass {
  class SomeClass extends ArrayList<Quote> {}
  public Quote[] all() {
    String path = "../../../data/data.json";
    Gson gson = new Gson();
    try {
      BufferedReader br = new BufferedReader(new FileReader(path));
      return gson.fromJson(br, Quote[].class);
    } catch (IOException e) {
      e.printStackTrace();  
    }
    return new Quote[]{};
  }
}

我得到以下错误:

java.io.FileNotFoundException:

我想既然它把文件放在build文件夹中,所以我可能也需要把我的文件放在那里的某个地方,我也试过了,但我想我需要更多的帮助。

从执行目录计算相对路径。如果在项目根目录中执行CCD_ 4,则从那里开始的相对路径是data/data.json而不是../../../data/data.json

当得到"找不到文件"错误时,最好在调试器中验证执行目录,或者通过插入打印语句,例如:

System.out.println(new File(".").getAbsolutePath());

从输出中,您将知道进程运行在哪个目录中,并且您将能够计算出正确的相对路径。

相关内容

  • 没有找到相关文章

最新更新