Java 如果目录为空,为什么作为类路径资源引用的目录为空?
我有以下单元测试类,它引用了一些测试数据文件作为类路径资源:Java 如果目录为空,为什么作为类路径资源引用的目录为空?,java,maven,Java,Maven,我有以下单元测试类,它引用了一些测试数据文件作为类路径资源: package com.altanqa.project.parser; public class ParserTest { private static final URL VALID_DIR = ParserTest.class.getResource("testData-VALID"); private static final URL INVALID_DIR = ParserTest.class.getReso
package com.altanqa.project.parser;
public class ParserTest {
private static final URL VALID_DIR = ParserTest.class.getResource("testData-VALID");
private static final URL INVALID_DIR = ParserTest.class.getResource("testData-INVALID");
private static final URL MISSING_DIR = ParserTest.class.getResource("testData-MISSING");
// ...
}
此处引用的目录结构如下所示:
src/test/java/com/altanqa/project/parser
ParserTest.java
src/test/resources/com/altanqa/project/parser
testData-VALID
data
test-data.txt
testData-INVALID
data
test-data.txt
testData-MISSING
data
被测试的解析器获取一个目录,并知道在其中查找data/testData.txt
。这里的测试类运行解析器,为其提供有效数据、无效数据和缺失数据,以检查解析器是否正确处理每种情况。有效和无效数据都可以正常工作,但缺少的URL为空。如果我将不同的文件(例如,a.txt
)放入测试数据缺失
,则URL已正确初始化,但目录中没有任何文件,则为空。这是类装入器的一个特性吗?有没有办法解决这个问题,即让MISSING_DIR
URL正确初始化,即使子目录中没有任何内容
谢谢大家! 这要归功于Boris,他强调这是Maven的问题,而不是Java的任何问题。maven资源插件
需要配置为在复制资源时包含空目录。在pom中:
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
...
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
...
</plugin>
</plugins>
</build>
maven资源插件
...
真的
...
鲍里斯强调这是一个Maven问题,而不是Java的任何问题,这一点值得赞扬。maven资源插件
需要配置为在复制资源时包含空目录。在pom中:
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
...
<configuration>
<includeEmptyDirs>true</includeEmptyDirs>
</configuration>
...
</plugin>
</plugins>
</build>
maven资源插件
...
真的
...
检查Maven或您的IDE是否已将testData MISSING/data
复制到target/test类
或out/test类
,这将是问题所在。。。你说得对,现在还没有被复制。非常感谢。检查Maven或您的IDE是否已将testData MISSING/data
复制到target/test class
或out/test class
,这将是问题所在。。。你说得对,现在还没有被复制。非常感谢。