是否有(兼容的,如果可能的话)方法来确定加载类的绝对路径?
当然,这并不总是可能的(如果你想到动态创建的类),但是如果加载的类在一个 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