如何在Java外部文件之前从jar加载资源?

时间:2013-08-01 12:06:17

标签: java file url jar classpath

我有以下问题: 我尝试从jar加载一个文件,但我在同一个相对路径外面有相同的文件:“res / rtrconfig”作为jar中的文件。如何忽略外部文件并获取jar文件路径?我无法删除外部文件,因为我的代码的其他部分需要它。    我到现在为止所做的事情:

ClassLoader loader = Thread.currentThread().getContextClassLoader();
        URL url = loader.getResource(path);
        //check if file is in jar or not
        if (url == null) {
            System.err.println("FATAL: Properties file not found.Stopping the server.");
            System.exit(-1);
        }
        if ( !url.getProtocol().equals("jar")){

            System.err.println("Properties found outside jars.Please delete " + url.getPath() + " and re-start the server");
            System.exit(-1);
        }

这段代码检查文件是在jar中还是在路径中创建的。 我不知道如何配置URL以在路径中的文件之前的jar中查看文件。 谢谢你的时间。

2 个答案:

答案 0 :(得分:1)

您可以获得所有资源

Enumeration<URL> urls = ClassLoader.getSystemClassLoader().getResources(path);

文件网址将包含&#34; file&#34;协议

    while (urls.hasMoreElements()) {
        URL url = urls.nextElement();
        if (url.getProtocol().equals("file")) {
            ...
        }
    }

答案 1 :(得分:0)

如果您使用的是spring,那么可以从jar外部获取jar资源文件。

ClassPathResource resource = new ClassPathResource(“schema / feed.xsd”);