Часто возникает ситуация, когда код выполняется внутри файла 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-файлу и использовать его для работы с файлами, расположенными рядом с ним.
Перейти в телеграм, чтобы получить результаты теста



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