Получение пути к файловой системе класса
Есть ли способ определить текущее местоположение файловой системы исполняемого класса из кода этого класса во время выполнения, если оно выполнено с помощью команды java
?
Например, для следующего класса:
public class MyClass{
public static void main(String[] args){\
new MyClass().doStuff();
}
private void doStufF(){
String path = ... // what to do here?!
System.out.println("Path of class being invoked: " + path);
}
}
Есть ли способ получить и напечатать правильный путь в файловой системе файла MyClass.class, только что вызывается?
Аналогично, если я вызываю jar файл из команды java -jar
, есть ли способ получить путь к файлу jar изнутри классов внутри этого jar?
P.S.:Please, не делают никаких предположений о рабочем каталоге, из которого вызывается команда java
!
Ответы
Ответ 1
Следующий фрагмент кода сделает это для вас:
final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
замените MyClass
на ваш main
класс
Результирующий объект File
f
представляет файл .jar
, который был выполнен. Вы можете использовать этот объект, чтобы заставить родителя найти каталог, в котором находится .jar
.