Почему бы просто не передать файл свойств в качестве аргумента вашему методу main?Таким образом, вы можете загрузить свойства следующим образом:
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.Это не то, что я бы порекомендовал - а что, если у вашего приложения есть несколько MyClass
экземпляров в classpath в разных файлах jar (каждый jar в своем каталоге)?то есть вы никогда не сможете гарантировать, что MyClass
был загружен из банки, которую вы считаете.