在Java中,如何在外部文件之前从jar加载资源?
我有以下问题: 我试图从jar加载一个文件,但我在外部有一个与jar中的文件位于相同的相对路径:“res/rtrconfig”。如何忽略外部文件并获取jar文件路径?。我无法删除外部文件,因为代码的其他部分需要它。 到目前为止我所拥有的:在Java中,如何在外部文件之前从jar加载资源?,java,file,url,jar,classpath,Java,File,Url,Jar,Classpath,我有以下问题: 我试图从jar加载一个文件,但我在外部有一个与jar中的文件位于相同的相对路径:“res/rtrconfig”。如何忽略外部文件并获取jar文件路径?。我无法删除外部文件,因为代码的其他部分需要它。 到目前为止我所拥有的: ClassLoader loader = Thread.currentThread().getContextClassLoader(); URL url = loader.getResource(path); //check i
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中还是在path中创建的。
我不知道如何配置URL以在路径中的文件之前查看jar中的文件。
谢谢您的时间。您可以获得所有资源
Enumeration<URL> urls = ClassLoader.getSystemClassLoader().getResources(path);
如果您使用的是spring,那么可以从jar外部获取jar资源文件
ClassPathResource=newclassPathResource(“schema/feed.xsd”) 谢谢。我正朝那个方向走,但我不知道该如何处理该枚举:)上面的代码返回什么?这个资源不是在罐子里找到的吗?如果不是,您要传递的路径值和jar内资源的全名是多少?“在jar外找到的属性。请删除“+此处是绝对路径+”并重新启动服务器”。res\rtrconfig是资源的名称
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
if (url.getProtocol().equals("file")) {
...
}
}