这个问题已经在这里有了答案 :
查找从何处加载Java类 (11个答案)
2年前关闭。
给定使用java命令执行的类,是否有任何方法可以在运行时从此类的代码确定其当前文件系统的位置?
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文件的路径?
java -jar
PS:请 不要对 从中java调用命令的 工作目录做任何假设 !
以下代码段将为您完成此操作:
final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
MyClass用你的main班级代替
MyClass
main
结果File对象f表示.jar已执行的文件。您可以使用此对象获取父级以查找所在目录.jar。
File
f
.jar