2

Java webapp があり、classpth からファイルを読み込もうとしています。

 if (fileName == null){
        fileName = Thread.currentThread().getContextClassLoader().getResource("config.properties");
    }
objFile = new File(fileName.toURI());

クラスパスに config.properties があります。WEB-INF/クラス。ローカルで検査すると、次fileName.toURI()のようになりますfile:/D:/dev/Tomcat_6_0/webapps/testApp/WEB-INF/classes/config.properties。そして正常に動作します。

問題は実稼働 Linux サーバーにあります。このパスを取得していますvfsfile:/export/home/u/bin/jboss-5.1.0.BE/server/default/deploy/testApp.war/WEB-INF/classes/config.properties

そして、次の例外が発生しています。

Caused by: java.lang.IllegalArgumentException: URI scheme is not "file"
    at java.io.File.<init>(File.java:366)
    at com.utils.ConfigLoader.loadConfigFilePath(ConfigLoader.java:87)

vfs を処理するための回避策は何ですか?

4

2 に答える 2

3

リソースをクラスパスからファイルに変換しようとしてはなりません。WAR/JAR 内にある場合は、ファイルでさえない可能性があります。File クラスは、ファイルシステム オブジェクトのみを表します。

于 2012-05-03T10:03:59.357 に答える
2

openStream()リソースをロードしているため (ファイルである場合もそうでない場合もあります。jar/war にパックされたこのプロパティ ファイルを想像してみてください)、 URL オブジェクトで使用しないのはなぜですか? 次に、返された BufferedStream からコンテンツを読み取るだけです。

于 2012-05-03T10:13:25.933 に答える