Как определить абсолютный путь (если есть) загруженного класса? - PullRequest
10 голосов
/ 28 декабря 2010

Существует ли (совместимый, если возможно) способ определения абсолютного пути загруженного класса?

Конечно, это не всегда возможно (если вы думаете о динамически создаваемых классах), но еслизагруженный класс находится внутри банки, как получить абсолютный путь для этой банки?

Ответы [ 2 ]

25 голосов
/ 28 декабря 2010
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: / Документы% 20 и% 20Настройки / Аргус / Мои% 20Документы /NetBeansProjects / temp / build / classes /

или

ClassLoader loader = GetClassPath.class.getClassLoader();
System.out.println(loader.getResource("org/life/java/so/questions/GetClassPath.class"));
4 голосов
/ 28 декабря 2010

Попробуйте что-то вроде этого:

SomeClass.class.getResource("/" + SomeClass.class.getName() + ".class").toString();

Если класс загружается из jar, результат должен выглядеть примерно так:

jar://myjar.jar!path/to/SomeClass.class
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...