Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
7 профессий по цене одной
07:05:47:06
дн. ч. мин. сек.
10 Июл 2023
1 мин
246

Получение пути к запущенному JAR-файлу

Часто возникает ситуация, когда код выполняется внутри файла JAR, например, app.jar, и появляется необходимость узнать путь к этому файлу. Это может быть

Часто возникает ситуация, когда код выполняется внутри файла JAR, например, app.jar, и появляется необходимость узнать путь к этому файлу. Это может быть полезно, когда приложение должно работать с файлами, расположенными в той же директории, что и JAR-файл.

Примером может служить ситуация, когда app.jar расположен в папке D:\Apps\, и приложению необходимо прочитать конфигурационный файл, который находится в той же папке.

Для получения пути к запущенному JAR-файлу можно использовать следующий код:

public class Main {
    public static void main(String[] args) {
        System.out.println(getJarPath(Main.class));
    }

    public static String getJarPath(Class aclass) {
        try {
            return new File(aclass.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

В данном коде осуществляется получение объекта CodeSource для класса, который запущен внутри JAR-файла, а затем извлекается путь к этому файлу. В случае, если код выполняется не из JAR-файла, а, например, из IDE, будет возвращен путь к скомпилированному .class файлу.

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

Таким образом, с помощью этого кода можно узнать путь к запущенному JAR-файлу и использовать его для работы с файлами, расположенными рядом с ним.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий