0

我有以下问题:我尝试从 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 中的文件。谢谢你的时间。

4

2 回答 2

1

你可以获得所有资源

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

文件 URL 将具有“文件”协议

    while (urls.hasMoreElements()) {
        URL url = urls.nextElement();
        if (url.getProtocol().equals("file")) {
            ...
        }
    }
于 2013-08-01T12:24:20.407 回答
0

如果您使用的是 spring,这将有助于从外部 jar 获取 jar 资源文件。

ClassPathResource 资源 = new ClassPathResource("schema/feed.xsd");

于 2014-08-18T18:35:41.007 回答