0

次の問題があります: 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 またはパスで作成されているかどうかを確認します。パス内のファイルの前に jar 内のファイルを処理するように URL を構成する方法がわかりません。御時間ありがとうございます。

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 に答える