Java 读取文件格式类路径

Java 读取文件格式类路径,java,eclipse,maven,Java,Eclipse,Maven,我有一个maven项目,希望从类路径中读取其中的文件。我使用的代码是 InputStream is=getClass().getResourceAsStream(“filename.json”) 但是每次我得到nullinputstreams时。我不知道为什么 该文件位于/src/main/resources下。同一个文件夹包含log4j.xml,它被正确地拾取 请注意,我正在尝试从Eclipse运行此文件,即运行或调试模式。没有虚拟机参数或任何东西 Class.getResourceAsStr

我有一个maven项目,希望从类路径中读取其中的文件。我使用的代码是

InputStream is=getClass().getResourceAsStream(“filename.json”)

但是每次我得到
null
inputstreams时。我不知道为什么

该文件位于
/src/main/resources
下。同一个文件夹包含
log4j.xml
,它被正确地拾取


请注意,我正在尝试从Eclipse运行此文件,即运行或调试模式。没有虚拟机参数或任何东西

Class.getResourceAsStream(String)
方法在给定类所在的同一命名空间(即包)中查找给定资源,除非您为其提供绝对路径(请参阅);如果在该命名空间的类路径上找不到资源,则返回
null
。由于您的类可能位于例如
com.myproject.resourcemanagement
中,因此您的资源文件必须类似地位于
src/main/resources/com/myproject/resourcemanagement
下,类似于类源文件的组织方式(位于
src/main/java/com/myproject/resourcemanagement
下)?
getResource
的javadoc是怎么说的?嗯,读了文档之后,我感到更困惑了。假设我的项目的输出是一个.jar文件,在.jar文件所在的同一个文件夹中有一个文件one.json。我想在类中读取一个.json文件,它是.jar的一部分,我该怎么做?为了避免这种情况,你可以使用
getClass().getClassLoader().getResourceAsStream()
,我认为这更简单。你可以将资源放在类路径(该类加载器的)的任何位置,然后你使用了错误的工具,因为这个文件很可能不在你的类路径上(无论如何,Maven不会以这种方式自动配置);就用吧。