Java在';在项目文件夹中
我目前有一个Java项目,在Eclipse中设置了以下目录结构: 在我的代码中,我有以下几行: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,这会
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
/...
请尝试使用whitInputStream 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,这只是与类加载器
一致,您应该指定绝对路径。