Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java在';在项目文件夹中_Java_Io - Fatal编程技术网

Java在';在项目文件夹中

Java在';在项目文件夹中,java,io,Java,Io,我目前有一个Java项目,在Eclipse中设置了以下目录结构: 在我的代码中,我有以下几行: InputStream is = this.getClass().getClassLoader().getResourceAsStream("resources/config"); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); 但是,InputStream is始终被分配为null,这会

我目前有一个Java项目,在Eclipse中设置了以下目录结构:

在我的代码中,我有以下几行:

InputStream is = this.getClass().getClassLoader().getResourceAsStream("resources/config");
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is));

但是,
InputStream is
始终被分配为null,这会在到达第二行时导致崩溃。我知道这与我如何设置它要查找的路径有关,但我无法确切地找出它不起作用的原因。

您的
配置文件位于您的项目中,文件系统的某个位置

然而,Eclipse并没有把它放在类路径上。要强制它位于类路径上,请右键单击文件夹并将其添加为源文件夹。然后Eclipse将它添加到类路径的根目录中。您可以使用

InputStream is = this.getClass().getResourceAsStream("/config");
Eclipse将所有内容放在
resources
source文件夹中,从类路径的根开始。所以

resources/config

将在类路径中显示为

/config
/qbooksprintfix/FileChecker
/qbooksprintfxi/FilePurgeHandler
/...

请尝试使用whit
InputStream is=this.getClass().getClassLoader().getResource(“/resources/config”).openStream()

或者
InputStream is=this.getClass().getClassLoader().getResourceAsStream(“/resources/config”)


在这两种情况下,请确保将“/”放在“资源”之前

使用Eclipse创建
resources
源文件夹。当我将完成的代码导出为可执行jar时,这会导致您的建议出现问题吗?我基本上希望能够编辑此配置,即使我已将其导出为可执行文件。@SotiriosDelimanolis然后使用
InputStream is=this.getClass().getClassLoader().getResourceAsStream(“/config”)
:)@Katona我将resources设置为项目的src文件夹,并更改了您指定的行(现在只是查找“/config”),当它到达bufferedreader行=/时仍然抛出空指针,所以我不能将src和resources作为源文件夹?将它们分开比较理想,这样我可以在导出配置后更轻松地编辑它。@user1806716您可以将它们作为源文件夹(以及更多)。如果不希望文件位于根目录下,可以在原始的
resources
文件夹中创建第二个
resources
文件夹,作为
/resources/resources/config
。然后可以通过
getResourceAsStream(“/resources/config”)
访问该文件。尽管在Eclipse的构建路径上,您仍然需要将原始的一个文件夹设置为
源文件夹。您可能希望查看Maven,因为它做了类似的事情。我将Resources设置为项目的src文件夹,并更改了您指定的行(现在只是查找“/config”),当它到达bufferedreader行时仍然抛出空指针=/是的,刚刚尝试过,它是
this.getClass().getClassLoader().getResourceAsStream(“config”);
正确(无前导的
/
)或
this.getClass().getResourceAsStream(“/config”);
,它相对于类进行搜索,因此它需要前导的
/
@Katona,这只是与
类加载器
一致,您应该指定绝对路径。