71

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

PS:请不要对调用命令的工作目录做任何假设java

4

1 回答 1

112

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

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

替换MyClass为您的main班级

结果File对象f表示.jar已执行的文件。您可以使用此对象让父对象找到它所在的目录.jar

于 2012-07-31T19:47:52.223 回答