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ファイルのパスを取得する方法はありますか?
P.S .:お願い、作業ディレクトリについて仮定しないJava
コマンドの呼び出し元!
次のコードスニペットがこれを行います。
final File f = new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath());
MyClass
をmain
クラスに置き換えます
結果のFile
オブジェクトf
は、.jar
実行されたファイル。このオブジェクトを使用して、.jar
が入っています。