获取正在执行的类的文件系统路径

2022-08-31 14:00:47

有没有办法在运行时从这个类的代码中确定已执行类的当前文件系统位置,因为它是使用命令执行的?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文件,有没有办法从该jar内的类中获取jar文件的路径?java -jar

P.S.:P请注意,不要对从中调用命令的工作目录做出任何假设java


答案 1

以下代码片段将为您执行此操作:

final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());

MyClass 替换为您的

生成的对象表示已执行的文件。可以使用此对象让父项查找 所在的目录。Filef.jar.jar


答案 2