获取正在执行的类的文件系统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
所在的目录。