我正在尝试从位于src > Truss > xml的文件夹中读取一些xml文件的名称。主类位于Truss目录中。当程序从eclipse运行时,它可以很好地读取文件,但是在导出到jar并运行时抛出这个错误:(这个错误是从cmd复制的,而不是从eclipse控制台复制的)。
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)代码如下:
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行。
发布于 2015-07-20 18:55:28
显然,getResourceAsStream()返回了null,而您没有检查它。
请求的资源不在该名称下的JAR文件中。
发布于 2015-07-20 19:43:11
从您显示的信息来看,我只能猜测您没有正确地将资源文件打包到jar中。请看一下这个related question。请注意,资源文件夹应该位于src文件夹(其中包含.java文件)下,而不是build文件夹(.class文件)下。
更新
我刚刚注意到你的"xml“实际上是一个文件夹,你不能使用getResourceAsStream()。This answer展示了一种枚举jar条目的方法,这可能是您的解决方案。
https://stackoverflow.com/questions/31514596
复制相似问题