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

有没有什么办法来确定当前的文件系统位置的执行类从这个类的代码,在运行时,鉴于它使用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); } } 

有没有什么办法可以获取和打印文件系统正确的pathMyClass.class文件刚被调用?

同样,如果我从java -jar命令调用jar文件,是否有任何方法从该jar内的类中获取jar文件的path?

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

下面的代码片段将为您做这个:

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

用你的main类replaceMyClass

生成的File对象f表示已执行的.jar文件。 你可以使用这个对象来让父母find.jar所在的目录。