我的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 / main / java目录中,我有一个包含以下行的类:
System.out.println(this.getClass().getResourceAsStream("test"));
当代码行在Eclipse中运行时,我得到输出
java.io.BufferedInputStream@1cd2e5f
当我将项目导出为.jar并运行它时,我得到输出
null
我配置错了吗?
答案 0 :(得分:10)
在<build><resources>
下,请确保拥有<include>
,如下所示
这将明确告诉maven获取这些文件并将其包含在构建中。
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
...
</build>
答案 1 :(得分:4)
我正面临着同样的问题。
当您尝试获取这样的资源时:
getClass().getResourceAsStream("test")
您正在尝试查找与该程序包相关的资源。
要从src/main/resources
目录中获取资源,必须在资源名称前加一个斜杠。
getClass().getResourceAsStream("/test")
答案 2 :(得分:2)
我收到了这个错误但是通过大量的谷歌搜索,我找不到解决方案。 所有答案都是关于路径的,没有人关心它可以在Eclipse中运行而不是在导出的jar文件中运行:(
但现在我找到了解决方案,这么简单: 在Eclipse中右键单击你的maven项目 - &gt;属性 - &gt; Java构建路径 - &gt;来源标签
您可以看到如下树:
MyProject/src
Ouput follder..
Included (**/*.java)
Excluded
...
双击Included (**/*.java)
,删除现有版本,使其成为Included (All)
现在导出jar文件:)