Java 在使用ClassLoader.getSystemResource(“File.txt”)访问的src\resources中找不到文件

Java 在使用ClassLoader.getSystemResource(“File.txt”)访问的src\resources中找不到文件,java,Java,我试图访问Java Netbeans项目中的一个文本文件,但一直没有找到该文件 请注意,我已尝试使用“src\…”和“resources\…”指定文件,并且仅使用文件名 这是我的代码: static class Task extends TimerTask { // Load the directory as a resource URL dir_url = ClassLoader.getSystemResource("word_list_moby_credits.txt");

我试图访问Java Netbeans项目中的一个文本文件,但一直没有找到该文件

请注意,我已尝试使用“src\…”和“resources\…”指定文件,并且仅使用文件名

这是我的代码:

static class Task extends TimerTask {
    // Load the directory as a resource
    URL dir_url = ClassLoader.getSystemResource("word_list_moby_credits.txt");
    // Turn the resource into a File
    File f = new File(dir_url.getFile());

    Scanner scanner = new Scanner(f);
我要走了

找不到文件

在上面代码的最后一行

这是我的项目:


请尝试阅读{Source Packages}/resources中的words.txt:

public static void main(String[] args) {
    try{
        URL url = Task.class.getResource("/resources/words.txt");
        Scanner scanner = new Scanner(url.openStream());
        System.out.println("" + scanner.next());
    } catch(IOException ex) {
        ex.printStackTrace();
    }
}
如果您已经有了其他主方法,并且仍然希望将此代码保留在方法之外,则可以将其包装在静态块中:

static class Task extends TimerTask {
   static {
        try {
            URL url = Task.class.getResource("/resources/words.txt");
            Scanner scanner = new Scanner(url.openStream());
            System.out.println("" + scanner.next());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
   }
}

请尝试阅读{Source Packages}/resources中的words.txt:

public static void main(String[] args) {
    try{
        URL url = Task.class.getResource("/resources/words.txt");
        Scanner scanner = new Scanner(url.openStream());
        System.out.println("" + scanner.next());
    } catch(IOException ex) {
        ex.printStackTrace();
    }
}
如果您已经有了其他主方法,并且仍然希望将此代码保留在方法之外,则可以将其包装在静态块中:

static class Task extends TimerTask {
   static {
        try {
            URL url = Task.class.getResource("/resources/words.txt");
            Scanner scanner = new Scanner(url.openStream());
            System.out.println("" + scanner.next());
        } catch (IOException ex) {
            ex.printStackTrace();
        }
   }
}

好的第一步是检查
dir\u url
,确保它与文件的真实位置相匹配。@JLewkovich谢谢。我的意思是文件在上面截图中的项目目录中。我手动放在那里。在您的评论之后,我再次检查以确保它仍然存在。我的意思是调试代码并在运行时检查
URL dir\u URL
,确保它与您手动放置file@JLewkovich哦,我明白了,谢谢你。是的,我现在就去做。好的第一步是检查
dir\u url
,确保它与文件的真实位置匹配。@JLewkovich谢谢。我的意思是文件在上面截图中的项目目录中。我手动放在那里。在您的评论之后,我再次检查以确保它仍然存在。我的意思是调试代码并在运行时检查
URL dir\u URL
,确保它与您手动放置file@JLewkovich哦,我明白了,谢谢你。是的,我现在就去。谢谢。如果我只是使用这种方法引用带有代码的文件,那么我会得到相同的错误。如果我用这个代码块替换我的代码,IDE会告诉我有一个未报告的异常IOException,并且不会给我自动修复它的选项。你可以将这个代码包装在try{}catch(Exeption e){}块中。我已经在我的Netbeans上运行了这段代码,效果很好。谢谢。Idk为什么Netbeans仍然不喜欢它:您必须将此代码放入一个方法中,例如:publicstaticvoidmain(String[]args){}。请再次查看我的更新。谢谢。如果我只是使用这种方法引用带有代码的文件,那么我会得到相同的错误。如果我用这个代码块替换我的代码,IDE会告诉我有一个未报告的异常IOException,并且不会给我自动修复它的选项。你可以将这个代码包装在try{}catch(Exeption e){}块中。我已经在我的Netbeans上运行了这段代码,效果很好。谢谢。Idk为什么Netbeans仍然不喜欢它:您必须将此代码放入一个方法中,例如:publicstaticvoidmain(String[]args){}。请再次查看我的更新。