2017-06-11 34 views
1

我是NetBeans中的新成员,并且在两个IDE都找不到我的文件时遇到问题。 如果我在PowerShell中编译并运行我的程序,它将完美运行。 ExceptionError类似于这个“java.io.FileNotFoundException:model \ field \ levels \ map01.field”。 我的软件包是。NetBeans和Eclipse FileNotFoundException

  • 控制器
  • model.field.levels
  • view.tiles

在Field.java:

public void setField() { 
    FieldReader fr = new FieldReader(); 
    field = fr.load("model/field/levels/map01.field"); 
} 

在FieldReader.java:

public int[][] load(String path){ 
    int field[][] = null; 
    try { 
     File file = new File(path); 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String s = null; 
     int line = 0; 
     int x = 0; 
     int y = 0; 
     while((s = br.readLine()) != null) { 
      if(line == 0) { 
       int start = 0; 
       int split = 0; 
       for (int i = 0; i < s.length(); i++) { 
        if(s.charAt(i) == 32) start = i + 1; 
        if(s.charAt(i) == 'x') split = i; 
       } 
       x = Integer.parseInt(s.substring(start, split)); 
       y = Integer.parseInt(s.substring(split + 1)); 
       System.out.println(x); 
       System.out.println(y); 
       field = new int[x][y]; 
      } 
      if(line >= 2) { 
       for (int i = 0; i < x; i++) { 
        field[i][line - 2] = Character.getNumericValue(s.charAt(i)); 
       } 
       System.out.println(s); 
      } 
      line++; 
     } 
     br.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return field; 
} 

该文件已到位,并通过加载其他文件,如图像,一切工作正常。

+1

您期望您的当前工​​作目录被设置为有意义的东西,以便您的相对路径得到解决。 Java不会设置你当前的工作目录。 –

+1

尝试打印'file.getAbsolutePath()' –

+0

我尝试了这个,但发生了一些奇怪的事情。 – SeTirap

回答

0

问题已经解决。 在NetBeans中,可以在运行右键单击Prokekt>属性>运行>工作指令时设置工作指令。获得绝对路径可以让我找到解决方案,所以谢谢Thorbjorn的提示。 :D

+1

我强烈建议捕获filenotfoundexceptions,并用包含未找到文件的绝对路径的描述进行包装,以便它成为堆栈跟踪的一部分。它会为你节省很多工作。 –

0

您正在依赖相对路径,这要求将当前工作目录设置为有用的东西。 Java不会自动执行此操作,因此您(或您的IDE)在启动程序时需要执行此操作。一个非常有用的工具是

File f = .... 
System.out.println(f.getAbsolutePath()); 

告诉你什么是实际正在寻找。当你获得更高级的时候,你可以让JVM在哪里找到你的课程,然后推断出你需要的文件的位置。

但是请注意,当包装java程序时,所有东西都打包在一个jar文件中。那么你目前的方法将无法工作。无论您是在IDE中还是在生产环境中运行(但其他程序都不容易看到这些文件),您应该可以轻松查看可在类路径中找到的资源。这是新程序员遇到的一个非常常见的问题,因此您现在不妨从现在开始,而不是稍后重新编写程序。