Gradle бросить NoSuchFileException для существующего файла в Ubuntu - PullRequest
0 голосов
/ 18 февраля 2019

Я работаю над небольшим проектом Gradle и хочу использовать мой класс Reader в тесте Спока.Когда я запускаю тест, класс Reader выдает:

java.nio.file.NoSuchFileException

В моем проекте Gradle у меня есть test.txt файл в /src/test/resources.Когда я запускаю тест с моим Reader, тогда Gradle показывает мне:

java.nio.file.NoSuchFileException: file:project_path/build/resources/test/test.txt

, хотя в этом пути есть файл.Я проверил, используя терминал и браузер.

Я использую Java 11 в Ubuntu.

//Reader class read lines:    
try (Stream<String> stream = Files.lines(Path.of(String.valueOf(getClass().getClassLoader().getResource(fileName)))))

//gradle.build without test dependencies
apply plugin: "java"
apply plugin: "groovy"

group = "com.example"
version = "1.0"
sourceCompatibility = "1.11"

repositories {
    mavenCentral()
}

1 Ответ

0 голосов
/ 18 февраля 2019

Измените Reader логику чтения на:

try (Stream<String> stream = Files.lines(Path.of(ClassLoader.getSystemResource(fileName).toURI()))) {
    ...
}

Path.of() создаст правильный путь при использовании URI: / project_path / build / resources / test / test.txt потому что он извлечет путь из провайдера, указанного протоколом в URI ( file: в вашем случае).

Но когда вы вызываете Path.of() для аргумента String, он предполагает, что это реальный путь ( файл: project_path / build / resources / test / test.txt в вашем случае).

...