【问题标题】:Can't load files because of NullPointerException由于 NullPointerException 无法加载文件
【发布时间】:2020-05-10 23:05:19
【问题描述】:

晚上好,我目前正在处理我的任务,我一直在寻找几个小时来发现这个错误。我尝试捕捉也不起作用的 NPE。我错过了什么?

该方法的目的是加载文件夹“templates”中所有后缀为“.txt”的文件作为CuttingTemplate 类的对象。然后将读取模板的名称设置为读取文件的方向,因此当文件 template123.txt 在文件夹“templates”中时,CuttingTemplate 的名称设置为“templates/template123.txt”; 然后所有加载的切割模板都保存在此列表中:

protected LinkedList<CuttingTemplate> templates = new LinkedList<CuttingTemplate>();

异常被捕获(除了我想不通的 NPE)。

所以方法如下:

这是堆栈跟踪:

enter image description here

我希望你能帮助我。

【问题讨论】:

  • 您在不打印堆栈跟踪的情况下捕获并吞下 NPE,因此难以调试。请参阅此post,了解您是否应该抓到 NPE。请在获得后提供堆栈跟踪,尽管这可能会作为 post 的副本而关闭。
  • 请发布异常堆栈跟踪
  • 通过复制和粘贴文本本身而不是图像来将堆栈跟踪添加到您的问题中。
  • 我对 Java 中的堆栈跟踪很陌生,我在 Eclipse 中的堆栈跟踪控制台由于某种原因是空白的。

标签: java file directory nullpointerexception load


【解决方案1】:

您使用的是什么操作系统? Unix 还是 Windows?有些东西告诉我该文件夹可能不存在,因为您提供的路径不是我对这两个环境的期望。

在 Windows 中,您的路径应该如下所示:

    C:/Users/username/Downloads/projectname/templates

在 Unix 中它应该是这样的:

    /home/username/Downloads/projectname/templates

【讨论】:

  • 好的,所以我在 Windows 上,我将文件路径调整为反斜杠符号,但使用双反斜杠,因为我收到编译时错误,但我仍然得到 NPE...跨度>
  • 在声明变量 templatesFolder 后尝试使用 System.out.println(templatesFolder.exists());:如果它打印“false” ,那么文件夹的路径还是错误的。另一方面,如果它打印“true”,那么问题出在其他地方
  • 谢谢你,我现在知道路径显然是错误的
  • 谢谢,我没想到要打印那个!现在我知道我的愚蠢了:我引导它进入的目录是一个 zip 文件,所以我解压缩了它并更改了字符串。我松了一口气,感觉自己打败了黑暗之魂。
  • 我的回答解决了你的问题吗?如果是,请将其标记为解决方案,否则请随时添加任何可以帮助我们帮助您的信息
【解决方案2】:

NPE 在函数的第 5 行抛出,因为第 4 行的 listFiles 函数返回 null 并且它是因为您正在读取类路径中的文件夹,该文件夹不可用,而不是您在中提到的路径第 1 行。

【讨论】:

  • Line#3,获取文件夹的名称
  • 好的,我应该替换 File relativeDestinationsFolder = new File(templatesFolder.getName()); getName 和 getPath?
  • 请检查异常所在的行并使用正确的输入处理 java API
猜你喜欢
  • 2020-12-18
  • 1970-01-01
  • 2012-02-20
  • 2021-07-08
  • 2021-10-31
  • 2021-10-30
  • 2012-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多