使用Maven(使用Eclipse IDE)无法访问资源目录中的文件
问题内容:
我有几个小时的问题,我尝试了在教程中找到的所有解决方案。很简单:我无法访问资源文件。我尝试打开已放入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中,我运行了(在我的项目文件夹中的包视图中):
- 运行方式> Maven构建>流程资源
- 运行为> Maven build> process-test-ressources
- 运行为> Maven构建>编译
与环境:本地
在测试中,我这样做:运行方式> Junit测试用例。但是它失败了……我在Maven生成的target / test-
classes目录中查找了文件test.txt。
我在项目的编译过程中是否错过了一些步骤,还是我的配置有问题?
编辑:
我尝试了File("test.txt")
和File("../test.txt")
。
问题答案:
在我看来,您的问题是
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() );
当然,您需要在该示例中添加错误处理。