getClass().getResourceAsStream() in maven project

♀尐吖头ヾ 提交于 2019-12-21 07:00:10

问题


The pom.xml of my maven project looks as follows:

<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>

In the src/main/resources directory I have a file called test. In the src/main/java directory I have a class that contains the following line:

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

When the line of code is run within Eclipse, I get as output

java.io.BufferedInputStream@1cd2e5f 

When I export the project as .jar and run it I get as output

 null

Did I configure anything wrong?


回答1:


Under <build><resources> make sure to have the <include> as below This will explicitly tell maven to fetch these files and include it in the build.

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



回答2:


I was facing this same problem.

When you are trying to get the resource like this:
getClass().getResourceAsStream("test")

You are trying to find the resource relative to that package.

To get the resource from the src/main/resources directory, you have to put a slash before the resource name.
getClass().getResourceAsStream("/test")




回答3:


I got this error but through ton of Googling, I could not find the solution. All the answers are about the path, nobody cares that It can run in Eclipse but not in exported jar file :(

But now I found solution, so simple: In Eclipse right click on your maven project-> Properties -> Java build path -> Source Tab

You can see a tree like :

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

Double click on Included (**/*.java), remove the existing one so It become Included (All) Now export the jar file :)



来源:https://stackoverflow.com/questions/14699441/getclass-getresourceasstream-in-maven-project

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!