2015-06-08 3 views
0

Я делаю программу в java, которая будет экспортироваться в runnable JAR и выполняется в Windows как служба с помощью YAJSW, я должен прочитать файл config.ini, который имеет важные параметры для выполнения, но я устанавливаю фиксированный путь:Как установить путь к файлу config.ini в Runnable Jar?

Path configFile = Paths.get("D:\\Folder\\config.ini"); 

Проблема в том, что я не знаю пути, где он будет выполнен на ПК конечного пользователя. я попытался это:

Path txtParametro = Paths.get("\\config.ini"); 

потому что .ini файл будет находиться в той же папке .jar, но не работает.

У кого-то есть представление о том, как я могу справиться с этим?

Я думал о переменных среды ... но должен был бы это сделать вручную, это не вариант.

+0

вам нужно найти каталог файла jar :) возможно, из системного свойства 'java.class.path' – ZhongYu

ответ

0

Если файл является частью JAR, то вы можете загрузить его, как это:

Class.getResourceAsStream ("config.ini");

Как описано здесь:

How do I access a config file inside the jar?

Если не в баночке, пожалуйста, сообщите нам об этом.

+0

он не находится в банке, потому что пользователь может редактировать параметры –

1

Вы можете установить файл, который будет создан в определенном месте, так что программа всегда будет знать, где он будет:

File file = new File("D:\\Folder\\config.ini"); 
if (!file.exists()){ 
    file.createNewFile(); 
} 

С уважением, Томас

0

Найдено решение, таким образом:

при условии, что config.ini находится в той же папке .jar

File pathJAR = new File(Main.class.getProtectionDomain().getCodeSource().getLocation().toURI()); 

возвращает мне путь запуска jar, "D:\Folder\name.jar", затем я заменяю «name.jar» на «config.ini».

не так красиво, но работает.