Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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
使用ant构建读取java中的静态文件_Java_Ant - Fatal编程技术网

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

使用ant构建读取java中的静态文件,java,ant,Java,Ant,我是ANT新手,在处理需要通过Java代码读取的静态文件时遇到一些问题。我的结构如下: build main example resository SomeClass.class data data.json src example repository SomeClass.java test 在SomeClass.java中,我需要读取data.json文件,但解析路径时出错。我认为它与蚂蚁有某种联系 public c

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

build
  main
    example
      resository
        SomeClass.class   
data
  data.json
src
  example
    repository
      SomeClass.java
test
在SomeClass.java中,我需要读取
data.json
文件,但解析路径时出错。我认为它与蚂蚁有某种联系

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[]{};
  }
}

我想,由于ant将文件放在
build
文件夹中,因此我可能也需要将文件放在那里的某个位置,我也尝试过这样做,但我想我需要更多帮助。

相对路径是从执行目录中相对计算出来的。 如果在项目根目录中执行
ant
, 然后从那里开始的相对路径是
data/data.json
,而不是
。/../../../data/data.json

获取“未找到文件”错误时, 最好在调试器中验证执行目录, 或通过插入打印语句,例如:

System.out.println(new File(".").getAbsolutePath());
从输出中,您将知道进程运行在哪个目录中,
您将能够计算出正确的相对路径。

我不知道我已经浪费了多少时间来寻找这个,为什么java要对我这样做。还有一件事,在生产中,我希望所有东西都放在一个文件中,我是否可以将数据文件放在build文件夹中并从那里引用它?这将取决于运行程序的进程的执行目录。
System.out.println(new File(".").getAbsolutePath());