问题
Is there a (compatible, if possible) way to determine the absolute path of a loaded Class?
Of course, this is not always possible (if you think of dynamically created classes), but if the loaded Class is inside a jar how to get the absolute path for this jar?
回答1:
MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()
Fullcode:
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());
}
}
Output:
/C:/Documents%20and%20Settings/argus/My%20Documents/NetBeansProjects/temp/build/classes/
Or
ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
回答2:
Try something like this:
SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();
If the class is loaded from jar the result should be something like:
jar://myjar.jar!path/to/SomeClass.class
来源:https://stackoverflow.com/questions/4546632/how-to-determine-absolute-path-if-any-of-a-loaded-class