2009-09-09 3 views
2

В Linux JVM устанавливает рабочий каталог, равный домашней папке от пользователя. В Windows это папка, в которой находится банка. Как я могу найти, где jar (из моего приложения) находится, чтобы изменить рабочий каталог?Java: Howto знает, где находится jar в Linux

Martijn

+0

В каком файле jar вы спрашиваете? Ваше приложение, API Java или сторонняя организация? –

+0

банку из моего приложения –

ответ

5

Попробуйте получить путь к банку с этим кодом:

String path = YourClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath(); 

Затем вы можете удалить «* .jar» часть с:

path=path.substring(0, path.lastIndexOf('/')+1); 

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

Двойной щелчок на банке в Linux не открыл файл. Конечно, вы можете открыть командную строку и сменить каталог в jar dir, а затем запустить банку, но мне нужно было дважды щелкнуть банку.

0

В обоих случаях это фактический каталог. В окнах автоматически фактический каталог устанавливается в базовый каталог баночки, если вы выполняете его из проводника. Под linux домашний каталог является фактическим каталогом для вашего графического интерфейса. Чтобы установить каталог, напишите короткий shell-скрипт, который устанавливает фактический каталог (с помощью команды cd), а затем выполняет банку (с javaw -jar xyz.jar).