首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NoSuchFileException抛出Ubuntu上的现有文件

将NoSuchFileException抛出Ubuntu上的现有文件
EN

Stack Overflow用户
提问于 2019-02-17 21:25:56
回答 1查看 680关注 0票数 1

我正在做一个小的Gradle项目,并且希望在Spock测试中使用我的Reader类。当我开始测试时,Reader类会抛出:

代码语言:javascript
复制
java.nio.file.NoSuchFileException

在我的Gradle项目中,/src/test/resources中有/src/test/resources文件。当我使用我的Reader运行测试时,Gradle告诉我:

代码语言:javascript
复制
java.nio.file.NoSuchFileException: file:project_path/build/resources/test/test.txt

即使在该路径中有一个文件。我使用终端和浏览器进行了检查。

我在Ubuntu上使用Java 11。

代码语言:javascript
复制
//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()
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-02-18 06:45:16

更改您的Reader读取逻辑:

代码语言:javascript
复制
try (Stream<String> stream = Files.lines(Path.of(ClassLoader.getSystemResource(fileName).toURI()))) {
    ...
}

当使用URI: / Path.of() _ path /build/resources/test/test.txt时,Path.of()将创建正确的路径,因为它将从URI中协议指定的提供程序中提取路径(文件:在您的例子中)。

但是,当您为(file:project_path/build/resources/test/test.txt参数调用Path.of()时,它假设它是您的实际路径String )。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54737839

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档