Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何确定加载类的绝对路径(如果有)?_Java_Reflection_Jar_Classloader_Absolute Path - Fatal编程技术网

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

Java 如何确定加载类的绝对路径(如果有)?,java,reflection,jar,classloader,absolute-path,Java,Reflection,Jar,Classloader,Absolute Path,是否有(兼容的,如果可能)方法来确定加载类的绝对路径 当然,这并不总是可能的(如果您想到动态创建的类),但是 如果加载的类位于jar中,如何获取此jar的绝对路径 MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath() 完整代码: package org.life.java.so.questions; /** * * @author jigar */

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

当然,这并不总是可能的(如果您想到动态创建的类),但是 如果加载的类位于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%20和%20设置/argus/My%20文档/NetBeansProjects/temp/build/classes/


试着这样做:

SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();
如果该类是从jar加载的,则结果应该如下所示:

jar://myjar.jar!path/to/SomeClass.class

请注意,如果安全管理器不让您知道,此操作可能会失败。我相信Java WebStart沙盒就是这种情况。类名必须通过以下方式转换为路径:
SomeClass.Class.getName().replace('.','/')
com.stackoverflow.Test
->
com/stackoverflow/Test
jar://myjar.jar!path/to/SomeClass.class