Подтвердить что ты не робот

Как получить каталог, в котором находится исполняемый файл jar?

Я запускаю файл jar в разных местах, и я пытаюсь выяснить, как получить местоположение файла jar, который запущен.

4b9b3361

Ответ 1

Не идеальное решение, но это вернет расположение базы кода класса:

getClass().getProtectionDomain().getCodeSource().getLocation()

Ответ 2

new File(".").getAbsolutePath()

Ответ 3

Вот мой способ получить путь выполнения из любого места

private static String GetExecutionPath(){
    String absolutePath = getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
    absolutePath = absolutePath.substring(0, absolutePath.lastIndexOf("/"));
    absolutePath = absolutePath.replaceAll("%20"," "); // Surely need to do this here
    return absolutePath;
}

Ответ 4

Рассмотрим следующую функцию

 //This method will work on Windows and Linux as well.    
     public String getPath(){
        URL rootPath = getClass().getResource("");
        String URI=rootPath.toString().substring(9);
        String[] currentPath=URI.split("myjar.jar!");
        currentPath[0]=currentPath[0].replaceAll("%20"," ");
        return currentPath[0];
        }

Ответ 5

Кажется, это вопрос, который нужно начинать с самого начала.

Если я запускаю код в Java, он заканчивается из rt.jar и, возможно, еще дюжины других банок.

Самые первые файлы для запуска будут на самом деле находиться в rt.jar, rt.jar, который вызывает ваш основной.

Если вы пишете класс, который позволяет вам рассказать, какой jar вы используете, и этот класс перемещается в другую банку, то вы больше не "исчерпаете" банку, в которой больше всего находится ваш основной.

Я думаю, что вам нужна командная строка, которая запустила ваше приложение, но если вы сначала поместите CD в каталог, тогда у него может не быть полного пути к вашей банке.

Кроме того, вы не можете запускать из банки - кто-то мог бы расширить вашу банку на классы в каталоге и запускать ее таким образом.

Лично я просто закрою вашу программу в оболочке script launcher, где вы можете посмотреть ваше текущее местоположение и местоположение файла jar, а затем передать их в java.