首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从BufferedReader读取时的NullPointerException,仅当作为jar运行时

从BufferedReader读取时的NullPointerException,仅当作为jar运行时
EN

Stack Overflow用户
提问于 2015-07-20 18:49:47
回答 2查看 674关注 0票数 0

我正在尝试从位于src > Truss > xml的文件夹中读取一些xml文件的名称。主类位于Truss目录中。当程序从eclipse运行时,它可以很好地读取文件,但是在导出到jar并运行时抛出这个错误:(这个错误是从cmd复制的,而不是从eclipse控制台复制的)。

代码语言:javascript
复制
java.lang.NullPointerException
        at java.io.FilterInputStream.read(Unknown Source)
        at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
        at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
        at sun.nio.cs.StreamDecoder.read(Unknown Source)
        at java.io.InputStreamReader.read(Unknown Source)
        at java.io.BufferedReader.fill(Unknown Source)
        at java.io.BufferedReader.readLine(Unknown Source)
        at java.io.BufferedReader.readLine(Unknown Source)
        at Truss.main.initiate(main.java:167)
        at Truss.main.<init>(main.java:729)
        at Truss.main.main(main.java:110)

代码如下:

代码语言:javascript
复制
try {
    InputStream in = main.class.getResourceAsStream("xml");
    BufferedReader input = new BufferedReader(new InputStreamReader(in));

    String profileName;

    while((profileName = input.readLine()) != null) {
        loadProfile(profileName.substring(0, profileName.length() - 4));
    }

} catch (Exception e) {
    e.printStackTrace();
}

while循环的构造函数是第167行。

EN

回答 2

Stack Overflow用户

发布于 2015-07-20 18:55:28

显然,getResourceAsStream()返回了null,而您没有检查它。

请求的资源不在该名称下的JAR文件中。

票数 1
EN

Stack Overflow用户

发布于 2015-07-20 19:43:11

从您显示的信息来看,我只能猜测您没有正确地将资源文件打包到jar中。请看一下这个related question。请注意,资源文件夹应该位于src文件夹(其中包含.java文件)下,而不是build文件夹(.class文件)下。

更新

我刚刚注意到你的"xml“实际上是一个文件夹,你不能使用getResourceAsStream()。This answer展示了一种枚举jar条目的方法,这可能是您的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31514596

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档