Java: найти текущий рабочий JAR - PullRequest
1 голос
/ 06 марта 2012

Я знаю, что системное свойство "user.dir" возвращает текущий рабочий каталог;каталог, содержащий этот файл, который в данный момент работает.

Мне интересно, как я смогу пойти еще дальше?Мне нужно найти текущий рабочий файл .Я пишу небольшое приложение, похожее на автообновление, и мне нужно знать файл, который нужно обновить.Например, если я запускаю файл из C: /test.jar, я хочу на самом деле узнать в коде, что текущее местоположение запускаемого файла: C: /test.jar чтобы я мог записать (новые) данные в него.

Я пробовал такой подход:

    ClassLoader loader = Test.class.getClassLoader();
    System.out.println(loader.getResource("Test.class"));

Однако, он распечатывает:

3/5/12 7:50:16.914 PM [0x0-0x31031].com.apple.JarLauncher: rsrc:Test.class

(Я запускаю это на Mac - я получилэта строка из консоли).Любая помощь очень ценится.Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 марта 2012

С кредитами на Fab в следующем посте: Путь к Jar + имя запущенного в данный момент jar

String path = Test.class.getProtectionDomain().getCodeSource().getLocation().getPath();
String decodedPath = URLDecoder.decode(path, "UTF-8");
0 голосов
/ 06 марта 2012

Будет напечатан путь к текущему файлу.

File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
        System.out.println(f.getPath());
...