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

时间:2012-07-31 19:46:04

标签: java filepath

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

同样,如果我从java -jar命令调用jar文件,有没有办法从该jar内的类中获取jar文件的路径?

P.S.:Please, 不要对调用java命令的工作目录做任何假设!

1 个答案:

答案 0 :(得分:92)

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

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

MyClass类替换为main

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