Java 将文件用作输入时的NullPointerException

Java 将文件用作输入时的NullPointerException,java,maven,file-io,nullpointerexception,Java,Maven,File Io,Nullpointerexception,有人给了我一个任务的现成代码示例,但我无法让它工作。爱,当这一切发生 package kth.id2010.lab.lab04; import edu.princeton.cs.introcs.In; import java.net.URL; public class Driver { public static void main(String[] args) { URL url = Driver.class.getResource("kap1.txt");

有人给了我一个任务的现成代码示例,但我无法让它工作。爱,当这一切发生

package kth.id2010.lab.lab04;


import edu.princeton.cs.introcs.In;
import java.net.URL;

public class Driver {

    public static void main(String[] args) {
        URL url = Driver.class.getResource("kap1.txt");
        In input = new In(url);//this is where the nullPointer is pointing

        while(!input.isEmpty()){
            String line = input.readLine().trim();
            String[] words = line.split(" ");
            for (String word : words) {
                System.out.println(word);
            }
        }
    }
}
这是打印出来的完整例外

线程“main”java.lang.NullPointerException中出现异常

在edu.princeton.cs.introcs.In.(In.java:105)

位于kth.id2010.lab.lab04.Driver.main(Driver.java:12)


我正在使用maven

这是因为您的路径错误并且
URL
对象为空,请确保
kap1.txt
文件位于您的资源路径下,而不是其他文件夹中,也请尝试以下操作:

URL url = Driver.class.getResource("/kap1.txt");

如果您没有使用资源,请参考

,问题是您的IDE不一定将当前工作目录指向java文件所在的位置。通常它指向项目文件夹内,但可以使用

System.out.println(System.getProperty("user.dir"));

打印出您的实际工作目录。代码中的相对路径将从这里开始,因此您希望将kap1.txt文件放在上面命令打印的任何目录中。

当我将.txt文件放在src/main/resources文件夹中并进行更改时,问题得到了解决
Url=Driver.Class.getResource(“kap1.txt”)

Url=Driver.Class.getResource(“/kap1.txt”)


不知道id这是Sercan Ozdemir所指的,但我想我应该澄清我是如何解决这个问题的。你有权访问In的源代码吗?在调用
新In(url)之前,你能使用调试器检查
url
的值是多少吗
?根据Class.getResource的规范--
返回:URL对象或null如果找不到具有此名称的资源
URL的值可能为null。检查您的类路径中是否存在kap1.txt文件。它与DriverOk位于同一文件夹中。我以前从未以这种方式使用过get资源。这不是读取文件的标准方式。查看有关如何执行此操作的更多信息,尽管我不确定是否允许您更改此代码,因为您说它是给定的。我会查看它,不认为这是一个问题。这更多是一个示例代码开始