ロードされたクラスの絶対パスを決定する (可能であれば互換性のある) 方法はありますか?
もちろん、これは常に可能であるとは限りません (動的に作成されたクラスを考える場合)、ロードされたクラスが jar 内にある場合、この jar の絶対パスを取得する方法は?
ロードされたクラスの絶対パスを決定する (可能であれば互換性のある) 方法はありますか?
もちろん、これは常に可能であるとは限りません (動的に作成されたクラスを考える場合)、ロードされたクラスが jar 内にある場合、この jar の絶対パスを取得する方法は?
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()
フルコード:
package org.life.java.so.questions;
/**
*
* @author jigar
*/
public class GetClassPath {
public static void main(String[] args) {
System.out.println(GetClassPath.class.getProtectionDomain().getCodeSource().getLocation().getPath());
}
}
出力:
/C:/Documents%20and%20Settings/argus/My%20Documents/NetBeansProjects/temp/build/classes/
または
ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
次のようなことを試してください:
SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();
クラスが jar からロードされた場合、結果は次のようになります。
jar://myjar.jar!path/to/SomeClass.class