Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用getResourceAsStream的InputStreamReader的NullPointerException_Java_Nullpointerexception_Inputstreamreader - Fatal编程技术网

Java 使用getResourceAsStream的InputStreamReader的NullPointerException

Java 使用getResourceAsStream的InputStreamReader的NullPointerException,java,nullpointerexception,inputstreamreader,Java,Nullpointerexception,Inputstreamreader,我试图从我的程序的JAR存档中读取一个文本文件。当我调用该方法时,我得到一个空指针异常。我在网上找不到很多这样做的例子,它们都很像我正在使用的 public class ConsoleHelp { public void print() { try { BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/d

我试图从我的程序的JAR存档中读取一个文本文件。当我调用该方法时,我得到一个空指针异常。我在网上找不到很多这样做的例子,它们都很像我正在使用的

public class ConsoleHelp {
    public void print() {
        try {
            BufferedReader reader = new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/data/cmdhelp")));

            int c;
            do {
                c = reader.read();
                System.out.print((char) c);
            } while (c > -1);
            System.out.println();
        } catch (IOException e) {
            System.out.println("JAR file has not been packaged correctly.");
        }
    }
}
我在尝试运行此代码时遇到此错误: $java-jar accface-0.1-test8.jar帮助

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:616)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.NullPointerException
        at java.io.Reader.<init>(Reader.java:78)
        at java.io.InputStreamReader.<init>(InputStreamReader.java:72)
        at frontend.ConsoleHelp.print(ConsoleHelp.java:11)
        at frontend.Command.main(Command.java:112)
        ... 5 more
线程“main”java.lang.reflect.InvocationTargetException中的异常 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中 位于java.lang.reflect.Method.invoke(Method.java:616) 位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58) 原因:java.lang.NullPointerException 在java.io.Reader上。(Reader.java:78) 位于java.io.InputStreamReader。(InputStreamReader.java:72) 在frontend.ConsoleHelp.print处(ConsoleHelp.java:11) 位于frontend.Command.main(Command.java:112) ... 还有5个
使用7zip、WinZip等打开jar。并检查路径“/data/cmdhelp”。这必须区分大小写。

我知道发生了什么,eclipse中的其他源文件夹具有相同的路径。因此getResourceAsStream的路径为/cmdhelp而不是/data/cmdhelp。该错误表示所需资源不可用。还有关于
getResourceAsStream()
。这个文件所在的项目结构是什么?我在相同的上下文中回答了这个问题。它可能会帮助您了解项目结构和
getResourceAsStream()