classLoader.getResource(“。”)是/ bin文件夹

时间:2013-10-31 18:49:07

标签: java classloader

我在Stackoverflow中已经阅读了至少3或4个这样的问题,但令人惊讶的是我无法弄清楚这里有什么问题。当我构建我的项目时,编译的类被移动到文件夹“/ bin”,当我尝试使用像

这样的东西时
 classLoader.getResource("/files/file1.txt")

Classloader无法找到它,因为它将“path / to / projectName / bin”视为其根文件夹

 classLoader.getResource(".")

以便返回

  

/路径/到/ PROJECTNAME / PROJECTNAME / bin中

不是

  

/ path / to / projectName / projectName /

因此我无法访问 / path / to / projectName / files / 文件夹。我在这里犯错了什么想法?

2 个答案:

答案 0 :(得分:4)

除了错误阅读文档外,你没有做错任何事。 ClassLoader从类路径加载资源,因此只能从类路径中的目录和jar加载资源。

如果要从任意位置读取文件,请使用文件IO,而不是ClassLoader方法。

答案 1 :(得分:1)

如果您要加载的文件是配置等资源,您可以在类路径中添加files文件夹并直接搜索文件

classLoader.getResource("file1.txt");

如果它只是任意文件,并且您不希望提供可移植性原因的绝对路径,您可以尝试使用File API通过提供相对路径来加载文件。

File file = new File("files/file1.txt");