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

MRa*_*ser 10 java reflection jar classloader absolute-path

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

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

Jig*_*shi 25

MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()  
Run Code Online (Sandbox Code Playgroud)

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());      
        }
    }
Run Code Online (Sandbox Code Playgroud)

输出:

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

要么

ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
Run Code Online (Sandbox Code Playgroud)