プロパティファイルをメインメソッドの引数として渡すだけではどうですか?次のようにそのように、あなたはプロパティをロードすることができます。
public static void main(String[] args) throws IOException {
Properties props = new Properties();
props.load(new BufferedReader(new FileReader(args[0])));
System.setProperties(props);
}
代替:あなたのjarファイルの現在のディレクトリを取得したい場合はあなたのような厄介な何かをする必要があります。
CodeSource codeSource = MyClass.class.getProtectionDomain().getCodeSource();
File jarFile = new File(codeSource.getLocation().toURI().getPath());
File jarDir = jarFile.getParentFile();
if (jarDir != null && jarDir.isDirectory()) {
File propFile = new File(jarDir, "myFile.properties");
}
を...ここでMyClass
はjarファイル内のクラスです。私がお勧めしたいものではありません - あなたのアプリケーションが複数の異なるjarファイル(別のディレクトリにある各jar)のクラスパスに複数のMyClass
インスタンスを持っていたらどうなりますか?つまり、実際にはMyClass
が、それがそうだと思われるジャーからロードされたことを保証することはできません。
http://stackoverflow.com/questions/775389/accessing-properties-files-outside-the-jarの可能重複 –