Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,如何在外部文件之前从jar加载资源?_Java_File_Url_Jar_Classpath - Fatal编程技术网

在Java中,如何在外部文件之前从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

我有以下问题: 我试图从jar加载一个文件,但我在外部有一个与jar中的文件位于相同的相对路径:“res/rtrconfig”。如何忽略外部文件并获取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中还是在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")) {
            ...
        }
    }