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?
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>
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")
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 :)