実行中のJavaプログラムのメインクラスのパスを取得する方法はありますか?実行中のJavaプログラムのパスを取得する方法
構造は、私がD:\Project\bin\
としてパスを取得したい
D:/
|---Project
|------bin
|------src
です。
私はSystem.getProperty("java.class.path");
を試してみましたが、私は
java -classpath D:\Project\bin;D:\Project\src\ Main
Output
Getting : D:\Project\bin;D:\Project\src\
Want : D:\Project\bin
のように実行した場合の問題は、これを実行する方法はありますか?
===== ===== EDIT
はここ
を ソリューションを手に入れました Jon Skeetによりpackage foo;
public class Test
{
public static void main(String[] args)
{
ClassLoader loader = Test.class.getClassLoader();
System.out.println(loader.getResource("foo/Test.class"));
}
}
このプリントアウト:Ericksonにより
file:/C:/Users/Jon/Test/foo/Test.class
ほとんどのクラスファイルはJARファイルにまとめられているため、これはすべての場合に機能しません(したがってIllegalStateException
)。ただし、この手法ではクラスを含むJARを見つけることができ、クラスファイルがgetResource()
の代わりにgetResourceAsStream()
に置き換えられてクラスファイルの内容を取得することができ、クラスがファイルシステム上にあるかどうかで動作しますJAR
さてあなたは、常に結果をトークン化でき、それの要素に分割することができますhttp://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html
(カットを見ると言うことができますエントリを区切る ";"の周りに)。 classpathプロパティには、通常、複数のエントリ(たとえば、使用しているライブラリなど)が含まれています。 あなたの要件を再考する必要があるかもしれません。 1つのフォルダに興味があるのなら、クラスパスを解析するのは良い考えですか? – Matthias
@Matthiasパス区切り記号はプラットフォームによって異なりますのでご注意ください。 'System.getProperty(" path.separator ");' –
http://stackoverflow.com/a/778246/1862502 –