22

我的 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.txt 的文件。在 src/main/java 目录中,我有一个包含以下行的类:

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

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

java.io.BufferedInputStream@1cd2e5f 

当我将项目导出为 .jar 并运行它时,我得到了输出

 null

我是不是配置错了什么?

4

3 回答 3

14

<build><resources>确保具有<include>如下内容这将明确告诉 maven 获取这些文件并将其包含在构建中。

   <build>
     <resources>
        <resource>
            <directory>${basedir}/src/main/resources</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </resource>
     </resources>
     ...
  </build>
于 2015-02-18T04:45:14.783 回答
13

我也面临同样的问题。

当您尝试获取这样的资源时:
getClass().getResourceAsStream("test")

您正在尝试查找与该包相关的资源。

要从src/main/resources目录中获取资源,您必须在资源名称前添加一个斜杠。
getClass().getResourceAsStream("/test")

于 2018-09-30T04:11:13.413 回答
2

我收到了这个错误,但是通过大量的谷歌搜索,我找不到解决方案。所有的答案都是关于路径的,没有人关心它可以在 Eclipse 中运行但不能在导出的 jar 文件中运行:(

但是现在我找到了解决方案,非常简单:在 Eclipse 中右键单击您的 maven 项目-> 属性-> Java 构建路径-> 源选项卡

你可以看到一棵树:

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

双击Included (**/*.java),删除现有的,这样它就变成Included (All) 了现在导出jar文件:)

于 2013-03-07T04:25:57.937 回答