当前位置: 首页 > 知识库问答 >
问题:

无法使用Maven(使用Eclipse IDE)访问资源目录中的文件

吴嘉禧
2023-03-14

我有几个小时的问题,我尝试了在教程中找到的所有解决方案。很简单:我无法访问资源文件。我试着打开一个我放在src/main/resources和src/test/resources中的文件。

我有一个简单的Java项目,我使用Maven,使用Eclipse作为IDE,使用m2e插件。我想在Maven中使用资源过滤,具有不同的配置文件,这是我的POM. xml

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>2.3.2</version>
      <configuration>
    <source>1.5</source>
    <target>1.5</target>
    <debug>false</debug>
    <optimize>true</optimize>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-resources-plugin</artifactId>
      <version>2.4</version>
      <configuration>
    <encoding>UTF-8</encoding>
      </configuration>
    </plugin>
  </plugins>

  <filters>
    <filter>src/main/filters/${env}.properties</filter>
  </filters>

  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <filtering>true</filtering>
    </resource>
    <resource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
    </resource>
  </resources>
</build>

<profiles>
  <profile>
    <id>LOCAL</id>
    <activation>
      <activeByDefault>true</activeByDefault>
    </activation>
    <properties>
      <env>local</env>
    </properties>
      </profile>
</profiles>

我在src/java/test中做了一个简单的测试:

@Test
public void testOpenResourceFile() {
    File testf=new File("/test.txt");
    assertTrue(testf.exists());
}

因此,在Eclipse中,我运行(在我的项目文件夹中的包视图中):

  • 运行为

带环境:本地

在测试中,我会:按

在项目的编译过程中,我是否遗漏了一些步骤,或者我的配置是否有问题?

编辑:
我也尝试了File("test.txt")File(".../test.txt")

共有3个答案

董和泽
2023-03-14

我也遇到了同样的问题,只需确保“text.txt”文件位于测试项目的资源文件夹(src/test/resources/text.txt)中,而不是任何其他资源文件夹中。此外,您应该从resources文件夹中检索文件,如下所示:

this.getClass().getClassLoader().getResource("text.txt").getFile();

如果仍然不起作用,请尝试在pom中将maven surefire插件中的useSystemClassLoader设置为false。xml。

http://maven.apache.org/surefire/maven-surefire-plugin/examples/class-loading.html

林辰钊
2023-03-14

检查您的<代码>

<build>
    <resources>
        <resource>
            <filtering>true</filtering>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
</build>
毛声
2023-03-14

在我看来你的问题是

File testf = new File( "/test.txt" );

正在查找名为test的文件。txt,位于计算机文件系统的根目录下。您需要的是资源树的根,通过getResource方法可以得到:

File testf = new File( this.getClass().getResource( "/test.txt" ).toURI() );

或者,在静态上下文中,使用包含类的名称:

File testf = new File( MyClass.class.getResource( "/test.txt" ).toURI() );

当然,您需要为该示例添加错误处理。

 类似资料:
  • 问题内容: 我有几个小时的问题,我尝试了在教程中找到的所有解决方案。很简单:我无法访问资源文件。我尝试打开已放入和的文件。 我有一个简单的Java项目,并且使用Maven(带有Eclipse作为IDE)和m2e插件。我想在Maven中使用具有不同配置文件的资源过滤功能,这是我的: 我在src / java / test中做了一个简单的测试: 因此,在Eclipse中,我运行了(在我的项目文件夹中的

  • 我正在尝试访问。我已经使用ebconfig将json文件下载到/tmp/目录,以在S3上存储私钥。 但它给了我以下错误 错误:EACCES:权限被拒绝,打开“/tmp/firebaseadminsdk”。json’ 文件中有一段说 第二个条目使用S3Auth身份验证方法从指定的URL下载私钥,并将其保存到/etc/pki/tls/certs/server。钥匙然后,代理服务器可以从此位置读取私钥,

  • 如何更改下面的代码来查看目录中的所有.log文件,而不是只查看一个文件? 我需要循环遍历所有文件,删除所有不包含“step4”或“step9”的行。目前,这将创建一个新文件,但我不确定如何在这里使用循环(newbie)。

  • 问题内容: 在Maven的资源插件: 此目标要求您配置要复制的资源,并指定outputDirectory。 使用maven 将内的两个(或多个)外部资源目录复制到构建输出目录(请参阅和)。 例如,给定上面复制的目录结构,并使用maven到目标目录。复制一个或另一个很容易,但是,该插件仅接受一个outputDirectory。如果将目录和两个目录都指定为资源,则每个目录的内容将被复制到目录,而不是目

  • javac是否有可能为以下过程生成无法访问的字节码? 当我查看字节码(javap-v)的异常表时,有以下条目看起来很奇怪: 和 现在的问题是,只有捕捉到类型为“any”而不是“Throwable”的异常,才能访问某些代码。在什么情况下会发生这种情况? ======编辑=====感谢您迄今为止的回答。让我给出另一个证据来证明我真的不理解异常处理:考虑以下过程 如果查看字节码,您会发现: 和异常表 这

  • 我正在尝试使用Gulp从主目录复制所选文件,但以下操作无法完成此操作: 什么是正确的设置为使其工作?文档对此非常简洁。