我的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>
Run Code Online (Sandbox Code Playgroud)
在src/main/resources目录中,我有一个名为test的文件.在src/main/java目录中,我有一个包含以下行的类:
System.out.println(this.getClass().getResourceAsStream("test"));
Run Code Online (Sandbox Code Playgroud)
当代码行在Eclipse中运行时,我得到输出
java.io.BufferedInputStream@1cd2e5f
Run Code Online (Sandbox Code Playgroud)
当我将项目导出为.jar并运行它时,我得到输出
null
Run Code Online (Sandbox Code Playgroud)
我配置错了吗?
Mil*_*d J 13
在<build><resources>确保有<include>如下这将明确地告诉Maven来获取这些文件,它包含在构建中.
<build>
<resources>
<resource>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
...
</build>
Run Code Online (Sandbox Code Playgroud)
我正面临着同样的问题。
当您尝试获取这样的资源时:
getClass().getResourceAsStream("test")
您正在尝试查找相对于该软件包的资源。
要从src/main/resources目录中获取资源,必须在资源名称前加一个斜杠。
getClass().getResourceAsStream("/test")
我收到此错误,但通过大量谷歌搜索,我找不到解决方案。所有的答案都是关于路径的,没有人关心它可以在 Eclipse 中运行,但不能在导出的 jar 文件中运行:(
但现在我找到了解决方案,非常简单:在 Eclipse 中右键单击您的 Maven 项目 -> 属性 -> Java 构建路径 -> 源选项卡
你可以看到一棵像这样的树:
MyProject/src
Ouput follder..
Included (**/*.java)
Excluded
...
Run Code Online (Sandbox Code Playgroud)
双击Included (**/*.java),删除现有的,这样它就变成了Included (All)
现在导出 jar 文件:)
| 归档时间: |
|
| 查看次数: |
14141 次 |
| 最近记录: |