Java命令行添加资源文件夹至类路径解决JUnit测试文件缺失问题
解决Windows命令行运行JUnit测试时资源文件找不到的问题
嘿,我之前也碰到过类似的坑!你现在的情况是测试代码要读取target/cde/FGH/SomeRandomFile.xml,但JVM在当前配置的类路径里找不到这个目录,所以抛出了文件不存在的错误。咱们来一步步搞定它:
快速修复:修改类路径包含资源目录
你当前执行的命令里,类路径只覆盖了classes编译目录、junit和dependency下的jar包,但cde文件夹直接在target根目录下,没被纳入JVM的资源查找路径。你可以把当前目录(也就是你执行命令的target目录,用.表示)加到类路径里,修改后的命令如下:
java -cp ". ;classes;junit;dependency\*" org.junit.runner.JUnitCore com.abc.TestA
这样Java就能通过相对路径cde/FGH/SomeRandomFile.xml找到目标文件了。如果你想更精准,也可以直接把cde目录本身加到类路径里,但用.更方便,它会包含target下的所有子目录和文件。
更规范的长期方案:遵循Maven资源目录规范
如果这个cde文件夹是你手动创建的,建议把它移到src/main/resources或者src/test/resources目录下(如果是测试专属资源就放test/resources)。Maven在执行compile或test-compile阶段时,会自动把这些目录下的资源复制到target/classes或target/test-classes里,这样你原来的命令不用做任何修改就能正常读取到文件了。这也是Maven项目的标准做法,能避免后续很多路径相关的麻烦。
几个小提醒
- 先手动检查
cde文件夹的路径和文件名有没有拼写错误,有时候肉眼很容易忽略大小写或者字符失误; - Windows系统的类路径分隔符是
;,你当前用的是对的,别不小心写成Linux的:了。
内容的提问来源于stack exchange,提问作者MSS
相关产品推荐
相关产品推荐

