2

所以基本上我的代码中有两行如下:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("resources/config");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

我在eclipse中的文件结构如下(图片发布):

在此处输入图像描述

当我尝试运行此代码时,当它到达第二行(BufferedReader 行)时,我得到 NullPointerExceptions。我一生都无法弄清楚为什么 InputStream "is" 变成了 null。有任何想法吗?

4

3 回答 3

4

当您使用类加载器加载流时,您使用的路径始终是绝对路径(因此在这种情况下您不应该使用前导/)并且应该从您的根包开始。在你的情况下,这是在src.

因此,由于您的资源在包下,qbooksprintfix/resources您应该像这样访问它:

getResourceAsStream("qbooksprintfix/resources/config")

于 2013-08-19T20:05:29.460 回答
0

getResourceAsStream()在该项目的类路径中查找,因此在您的情况下,它的“基本”目录可能是src

InputStream is = this.getClass().getClassLoader().getResourceAsStream("qbooksprintfix/resources/config");
于 2013-08-19T19:59:40.293 回答
0

那应该是

getResourceAsStream("qbooksprintfix/resources/config");

或者最好

Thread.currentThread().getContextClassLoader().getResourceAsStream("qbooksprintfix/resources/config");
于 2013-08-19T20:02:17.340 回答