Как добавить папку ресурсов в classpath в параметрах командной строки Java - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь запустить тестовые примеры 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

Эта папка cde, содержащая xmls, также находится внутри папки target, из которой я запускаю свои тестовые команды.

Есть ли способ включить файлы ресурсов в командную строку Java?

1 Ответ

0 голосов
/ 09 июля 2019

В исходном коде используйте следующую конструкцию:

package com.foo.package;

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

Первая строка загрузит ресурс "/cde/FGH/SomeRandomFile.xml" из любой папки или jar, упомянутых в classpath, поэтому вНапример, в вашей командной строке будет сканироваться D:\WorkSpace\Testspace\MyProject\target\classes\cde\FGH\SomeRandomFile.xml.

Во второй строке учитывается имя пакета вашего класса, поэтому, например, будет проверено значение /com/foo/package/relative/example.xml на D:\WorkSpace\Testspace\myProject\dependency\somedep.jar.

Обратите внимание, что синтаксис * в параметре -cp будет принимать каждый JAR внутри указанной папки и включать его в путь к классам.Это все, что он делает.

Если вы не используете getResource, вы зависите от «текущего рабочего каталога», который может быть чем угодно, и параметр -cp не будет иметь никакого эффекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...