迁移到java11后获取NoSuchFileException

时间:2019-09-03 13:34:28

标签: spring-boot maven-3 java-11 maven-surefire-plugin

我有单元测试方法,该方法使用子级中与测试文件夹相关的资源,当我运行此项目时,它工作正常,但是当我运行父级时,它将父级路径附加到我的相对字符串值JsonFile而不是当前项目路径

    JsonFile = "src/test/resources" + "fileName";
    System.out.println(Paths.get("").toAbsolutePath());
    String input = new String(Files.readAllBytes(Paths.get(JsonFile)));

我正在使用openJDK11,SureFire插件3.0.0-M3和springboot 2.1.5.RELEASE。 为什么这种不同的行为
    mvn clean install -Pjava11
java11是配置文件存在于父pom

我试图覆盖配置文件java11并更改SureFire插件的版本,但是它没有用,我不确切知道问题出在哪里?与Java 8配合使用

1 个答案:

答案 0 :(得分:1)

实际上,经过大量搜索,我发现Path.get与文件系统有关,而不与工作目录link shows that 相关。  之后,我更改了使用

之类的classLoader获取测试文件夹中存在的资源文件的机制

ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource(fileName).getFile()); JsonFile = file.getAbsolutePath();

它与父母和孩子mvn clean install -Pjava11正常工作 我添加什么更改Path.get()的机制并不明显 但从jdk 7起并没有改变