错误消息:文件“ countries.geo.json”丢失或无法访问

时间:2019-01-02 02:34:54

标签: java processing

我正在参加Java类的Coursera OOP。在模块4作业中,我运行该课程在EarthquakeCityMap.java中提供的代码, 并显示错误消息“缺少文件“ countries.geo.json”或无法访问该文件,请确保URL有效或该文件已添加到您的草图中并且可读。 线程“ Animation Thread”中的异常java.lang.NullPointerException”

我尝试将countryFile设置为 “ ../data/countries.geo.json”, “ data / countries.geo.json”, 以及国家档案的完整路径, 但仍然没有解决问题。

//this error points to the code
private String countryFile = "countries.geo.json";
List<Feature> countries = GeoJSONReader.loadData(this, countryFile);"

//the countries file is saved in data folder.

对象文件夹列表

Poject folder listing

2 个答案:

答案 0 :(得分:0)

如果您指定了完整路径,但该路径不起作用,则您可能忘记了用另一个反斜杠转义\字符。反斜杠字符很特殊,需要加倍以正确解释Windows路径。例如“ c:\\ users \\ ...”。您也可以指定/而不是\,它将起作用:“ c:/ users /...”

也就是说,文件的路径分辨率是相对的(即,IE对文件系统根目录不是绝对的)相对于已执行应用程序的工作目录。通常,在没有任何特殊配置的IDE中,工作目录将是项目的根路径。因此,为了正确解析相对文件路径,您必须将路径指定为“ data / countries.geo.json”。

您还可以通过执行System.out.println(new java.io.File(“。”)。getAbsolutePath())并根据以下内容制作相对路径来找出运行应用程序时所处的路径此文件夹。

答案 1 :(得分:0)

"countries.geo.json"(除非在GeoJSONReader中进行了更改以操纵此路径)将相对于IntelliJ项目out文件夹中已编译的java .class文件。

如果this中的GeoJSONReader.loadData(this, countryFile);是一个PApplet实例,则可以使用sketchPath()来创建相对于运行草图的文件夹的路径:

List<Feature> countries = GeoJSONReader.loadData(this, this.sketchPath("data"+File.separator+countryFile));

以上代码段均基于一个假设,因此代码中的语法可能会略有不同,但是希望这可以说明您如何使用sketchPath()

另外还有一个dataPath(),您可以从setup()中的主PApplet进行测试:

String fullJSONPath = dataPath("countries.geo.json");
println("fullJSONPath: " + fullJSONPath);//hopefully this prints the full path to the json file on your machine
println(new File(fullJSONPath).exists());//hopefully this prints true