我有以下问题: 我尝试从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中查看文件。 谢谢你的时间。
答案 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”);