如何确定已加载类的绝对路径(如果有)?

是否有(兼容的,如果可能的话)确定加载类的绝对路径的方法?

当然,这并不总是可行的(如果你想到动态创建的类),但如果加载的Class在jar中,如何获取这个jar的绝对路径?

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()); } } 

输出:

/ C:/文件%20于是%20Settings / ARGUS /我的%20Documents /的NetBeansProjects /温度/建设/class/

要么

 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