class.getResource()。getFile()获取文件的旧版本

时间:2018-09-18 06:25:36

标签: java

在测试资源包下,我的文件与我的测试类在同一路径中。对资源文件进行更改后,当我尝试使用./gradlew test运行测试用例时,读取该文件(使用调试器验证)后,更改不会反映出来。我已经尝试清理项目,但这无济于事。

对于我在这里缺少的资源,是否还有其他缓存发生?

这是我读取文件的方式:

File testFile = new File(this.getClass().getResource("namr_two").getFile());

1 个答案:

答案 0 :(得分:0)

getClass()。getResource()从类路径而不是文件系统中加载资源。类加载器负责在运行时将Java类和资源动态加载到JVM(Java虚拟机)。

我建议使用ClassLoader.getSystemResource():

    File testFile = new File(ClassLoader.getSystemResource("namr_two").getFile());

或:

    Class class1 = null;
    try {
        class1 = Class.forName("class1");
        ClassLoader cl = class1.getClassLoader();
        File testFile = new File(cl.getResource("namr_two").getFile());
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }