0

実行可能な jar ファイルの MANIFEST.MF の次の抜粋があるとします。

Manifest-Version: 1.0
Main-Class: com.intersportleitner.skischule.gui.window.SkischulApplicationWindow
Class-Path: .
...

次のようなディレクトリ構造を持つことは可能ではないでしょうか。

Appdir
  |- bla.jar (self-executable)
  |- x.properties
  |- y.properties

次のコードフラグメントを使用してプロパティをロードしようとすると、IOException が発生するためです: プロパティでストリームが閉じられました.load(stream):

Properties properties = new Properties();
InputStream istream=SkischulApplicationWindow.class.getClassLoader().getResourceAsStream("y.properties");
BufferedInputStream stream = new BufferedInputStream(istream);
properties.load(stream);
stream.close();

実際には istream が null であるため、例外は少し誤解を招くものです (テスト目的で istream のメソッドを呼び出そうとしたため...)、プロパティ ファイルが見つからず、失敗する理由がわかりません。 to Executable jar は、このように動作するはずのプロパティファイルを見つけられません...

4

1 に答える 1

2

getResourceクラスローダーの実装とgetResourceAsStreamクラスパスに依存しています。

私は埋め込みリソースを探しているときにのみこのアプローチを使用する傾向がありますが、それは私だけです

あなたは「できた」

InputStream istream=SkischulApplicationWindow.class.getClassLoader().getResourceAsStream("/y.properties");

その代わり

于 2012-08-16T09:36:24.490 に答える