如何在Java命令行选项中将资源文件夹添加到类路径

时间:2019-07-09 12:46:48

标签: java maven command-line

我正在尝试从命令行运行Junit测试用例。

我从Windows D:\WorkSpace\Testspace\MyProject\target文件夹中像这样触发我的测试:

java -cp "classes;junit;dependency\*"  org.junit.runner.JUnitCore com.abc.TestA

这是一个Maven项目。它引发以下错误:

2019-07-09T17:59:41.330 ERROR [com.abc.IOUtil] - FileNotFoundException Occurredjava.io.FileNotFoundException: D:\WorkSpace\Testspace\MyProject\target\cde\FGH\SomeRandomFile.xml (The system cannot find the path specified)IOUtil

这个包含xml的cde文件夹也位于target文件夹中,我从该文件夹中触发测试命令。

是否可以在Java命令行中包含资源文件?

1 个答案:

答案 0 :(得分:0)

在您的源代码中,使用以下构造:

package com.foo.package;

public class Example {
    public void loadResourceExample) {
         Example.class.getResource("/cde/FGH/SomeRandomFile.xml");
         Example.class.getResource("relative/example.xml");
    }
}

第一行将从类路径中提到的任何文件夹或jar中加载资源“ /cde/FGH/SomeRandomFile.xml”,因此在示例命令行中,例如将扫描D:\WorkSpace\Testspace\MyProject\target\classes\cde\FGH\SomeRandomFile.xml

第二行考虑了您的类的包名称,因此,它将例如在D:\WorkSpace\Testspace\myProject\dependency\somedep.jar上检查条目/com/foo/package/relative/example.xml

请注意,-cp参数中的*语法会将指定文件夹中的每个 JAR 包含在内,并将其包含在类路径中。这就是全部。

如果您不使用getResource,则实际上取决于“当前工作目录”,并且-cp参数不会起作用。

相关问题