【问题标题】:null pointer exception reading properties file空指针异常读取属性文件
【发布时间】:2012-09-06 03:55:16
【问题描述】:

我真的不知道还能做什么。我通常将我的属性文件放在我的源文件夹中(顺便说一下,我使用的是 Netbeans),当我阅读它时,一切正常。

今天,我在源文件夹中创建了一个新的属性文件并尝试读取它,但我不断收到空指针异常,表示源文件夹中不存在该文件。然而,在所述源文件夹中还有另一个属性文件,我能够很好地阅读该文件。我删除了这两个属性文件并重新开始,但这一次我似乎什么也看不到。

我的代码很好:

Properties pp = new Properties();                
pp.load(getClass().getResourceAsStream("/errors.properties"));

然后我为我的项目进行了清理和构建,现在其中一个类可以读取 errors.properties 文件(相同的代码,没有任何更改),但我现在也得到了一个 java.lang.NoClassDefFoundError我尝试运行它时的第二类。

哇!?

【问题讨论】:

  • 您的属性文件是否被复制到 build/classestarget,无论您的 .class 文件位于何处?
  • 我对 netbeans 7.2 没有任何问题。得到 NoClassDefFoundError 意味着你缺少一个库。

标签: java netbeans


【解决方案1】:

试试这个:

Properties pp = new Properties();
InputStream is = getClass().getClassLoader().getResourceAsStream("errors.properties");
pp.load(is);

顺便说一句。这不是 NetBeans 中的错误。

如果你使用getClass().getResourceAsStream("errors.properties"),你的error.properties 必须是你上课的地方。

注意:我使用InputStream is 只是因为否则行会变得太长。当然你可以把两条线合二为一。

【讨论】:

  • getClass().getResourceAsStream() 第一次尝试做getClass().getClassLoader().getResourceAsStream()。如果失败,那么它将尝试从ClassLoader.getCallerClassLoader() 获取ClassLoader。这是唯一的区别。
猜你喜欢
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2020-06-23
  • 1970-01-01
  • 2019-03-26
相关资源
最近更新 更多