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