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 に答える