Java 不正确地访问资源文件

Java 不正确地访问资源文件,java,eclipse,Java,Eclipse,我正试图使用以下代码片段访问eclipse中的资源文件 public class ResourceHandler { public void test() throws IOException { String filePath = this.getClass().getResource("resources/MANIFEST_HAPPYVERSION.MF").getPath();// throws a NPE System.out.println(

我正试图使用以下代码片段访问eclipse中的资源文件

public class ResourceHandler {

    public void test() throws IOException {
        String filePath = this.getClass().getResource("resources/MANIFEST_HAPPYVERSION.MF").getPath();// throws a NPE
        System.out.println( filePath );
        //System.out.println( file.exists() );
    }

    public static void main(String [] args) throws Exception {
        ResourceHandler test = new ResourceHandler();
       test.test();
    }
}
这是我的目录结构图。


我到底做错了什么?

正确的方法是使用类加载器中的getResource。因此,它可以在任何地方工作,包括web容器

URL resource = this.getClass().getClassLoader().getResource("MANIFEST_HAPPYVERSION.MF");
if (resource != null) {
    String path = resource.getPath(); // You can try getFile...
}

this.getClass().getResource
将尝试查找与当前类相关的资源(
com/spring/helloWord
),尝试使用
/resources/MANIFEST\u HAPPYVERSION.MF
而不是使用
字符串文件路径=this.getClass().getResource(/src/main/resources/MANIFEST\u HAPPYVERSION.MF”).getPath()工作?它也会抛出一个NPE否,因此
/resources/MANIFEST\u HAPPYVERSION.MF
应该可以工作,
src/main
一旦项目正确构建就不存在了……我想是这样,使用
resources/MANIFEST\u HAPPYVERSION.MF
将基于用于调用
getResources
的类的包进行相对搜索,使用
/…
使搜索从类路径的根开始…实际上我的错误。这种方法不起作用。下面是一段代码片段,根据你的建议我正在做什么。它仍然抛出一个文件未找到异常<代码>字符串文件路径=“/resources/MANIFEST\u HAPPYVERSION.MF”;URL=新文件(filePath).toURI().toul();如果(url!=null){InputStream is=url.openStream();}
。这正是你的意思吗?将“MANIFEST\u HAPPYVERSION.MF”更改为“.”。它应该显示类加载器指向的文件夹。它指向
helloworld/target/classes/
,其中helloworld是项目的名称。我在答案上纠正了一个拼写错误。你从这里复制代码了吗?MANIFEST\u HAPPYVERSION.MF是错误的。可以再试一次吗?并检查清单文件的helloworld/target/Class。。。有吗?没有。我正试图从
resources/