的getClass()。的getResourceAsStream()在Maven项目(getClas

2019-08-16 18:10发布

我的Maven项目的pom.xml如下所示:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>groupId</groupId>
  <artifactId>artifactId</artifactId>
  <version>0.0.1-SNAPSHOT</version>

  <build>
   <sourceDirectory>src/main/java</sourceDirectory>
   <resources>
    <resource>
     <directory>src/main/resources</directory>
    </resource>
   </resources>
  </build>
</project>

在src / main / resources目录我有一个名为test的文件。 在src /主/ java目录我有一个包含以下行的类:

System.out.println(this.getClass().getResourceAsStream("test"));

当代码行是在Eclipse中运行,我得到的输出

java.io.BufferedInputStream@1cd2e5f 

当我出口项目为.jar和运行它,我得到的输出

 null

我有没有配置任何东西错了吗?

Answer 1:

<build><resources>确保有<include>下面这将明确地告诉Maven来获取这些文件,它包含在构建中。

   <build>
     <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
     </resources>
     ...
  </build>


Answer 2:

我正面临同样的问题。

当你试图获取资源是这样的:
getClass().getResourceAsStream("test")

你正在努力寻找资源相对于包。

从获取资源src/main/resources目录,你有资源的名字之前加上斜线。
getClass().getResourceAsStream("/test")



Answer 3:

我得到这个错误,但通过谷歌搜索吨的,我无法找到解决方案。 所有的答案都对路径,无人问津,它可以在Eclipse中运行,但无法在导出的jar文件:(

但是现在我发现的解决方案,就这么简单:在Eclipse中右键点击你的Maven项目 - >属性 - > Java构建路径 - >源标签

你可以看到像一棵树:

MyProject/src
   Ouput follder..
   Included (**/*.java)
   Excluded
   ...

上双击Included (**/*.java) ,删除现有之一,所以它成为Included (All)现在出口的jar文件:)



文章来源: getClass().getResourceAsStream() in maven project