Java 不正确地访问资源文件
我正试图使用以下代码片段访问eclipse中的资源文件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(
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/