需要使用绝对路径和类加载器加载属性文件

时间:2018-09-20 10:36:23

标签: java classloader absolute-path

所以我有一个第三方类(使用它的公司授权),它公开了一个称为

的静态方法。

公共静态属性loadProperty(String path);

在内部,它尝试使用以下代码进行加载。

ClassLoader a = ClassLoader.getSystemClassLoader();
if (a != null) {
    URL u = a.getResource(path); // - - - > returns null
    if (u != null) {
        u = a.getResource('/' + path); // - - - > returns null
    }

    if (u == null) {
        ClassLoader b = Thread.currentThread().getContextClassLoader();
        u = b.getResource(path); // - - - > returns null

        if (u != null) {
            u = b.getResource('/' + path); // - - - > returns null
        }
    }
}

这里的问题是,我总是空的。

如果我将文件保存在/ resources中,然后引用它,那么它将找到该文件。

经过研究,我发现它指的是相对路径。

由于我的应用程序将在不同的环境上运行,因此我希望使其可配置并将文件保留为外部文件。

因此,有没有一种方法可以传递路径,使加载程序可以从该路径加载文件? 诸如“ cd ..”之类的东西在目录中上移了,是否有任何方法可以直接进入root(windows-C:\ n Unix root〜),然后从那里开始并进入绝对路径?

寻求帮助。

1 个答案:

答案 0 :(得分:0)

ClassLoader仅加载类路径上的资源。处理文件的绝对路径时,可以使用File类来访问这些文件。