是否有一种(兼容的,如果可能的话)方式来确定已加载Class的绝对路径?

当然,这并非总是可能的(如果您想到的是动态创建的类),但是
如果加载的类在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());
        }
    }

输出:



或者
ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));

10-01 12:51