Путь установки исполняемого файла Jar - PullRequest
1 голос
/ 11 января 2011

Для исполняемого Jar с основным классом в манифесте:

Когда я запускаю его с помощью java -jar myjar.jar, как я могу узнать каталог установки этого jar во время выполнения?

Что я хочу сделать, так это разработать клиент командной строки для Flyway .

Инструмент будет установлен со следующей структурой папок:

INSTALLATION_PATH
|
-- bin
|   |
|   --start.sh (launches flyway.jar)
|
-- lib
|   |
|   --flyway.jar (contains Main class, loads flyway.properties)
|
-- conf
    |
    --flyway.properties (configuration)

Как flyway.jar разрешить INSTALLATION_PATH?

Ответы [ 3 ]

6 голосов
/ 11 января 2011

Вы можете попробовать:

// this generally returns the PWD
String pwd = System.getProperties().getProperty("user.dir"); 

// or you can get the location of the URL
// from the .jar file in which your class was loaded
// you may want to then simply back it up a level with ".."
URL yourJar = getClass().getProtectionDomain().getCodeSource().getLocation();
1 голос
/ 11 января 2011

следующее даст вам начальный каталог:

new File(".").getAbsolutePath()
0 голосов
/ 11 января 2011

Предпочтительный способ сделать это вместо того, чтобы пытаться найти каталог установки во время выполнения, это:
Выполните установку, а затем отредактируйте системные свойства classpath, добавив этот jar и все зависимые jar.что вы можете запустить его из любого каталога.
Преимущество, конечно, в том, что вы устанавливаете classpath только один раз во время установки.Нет необходимости искать каталог установки во время выполнения каждый раз, когда вы решите его запустить.

...