Где в файловой системе был мой класс Java, загруженный из?

Проблема в вашем утверждении if:

if (lang = userLang)

Здесь вы используете оператор присваивания (=) - это присваивает значение переменной. Вы хотите использовать оператор равенства / сравнения (==) - это проверяет, равно ли одно значение другому. Измените ваше утверждение if на следующее:

if (lang == userLang)

И ваш код будет работать.

23
задан Yiannis Dermitzakis 3 August 2016 в 15:10
поделиться

4 ответа

Просто запустите java , используя стандартный переключатель командной строки « -verbose: class » (см. java документация ). Он будет распечатываться каждый раз при загрузке класса и сообщать вам, откуда он загружен.

28
ответ дан 29 November 2019 в 01:43
поделиться

Если вы хотите сделать это программно из приложения, попробуйте:

URL loc = MyClass.class.getProtectionDomain().getCodeSource().getLocation();

(обратите внимание, getCodeSource () может возвращать ноль, так что на самом деле не делайте все это в одной строке :))

14
ответ дан 29 November 2019 в 01:43
поделиться

Так как класс должен прийти откуда-то из пути к классу, я бы рекомендовал просто напечатать путь к классу и проверить, есть ли где-нибудь более старая версия вашего класса.

0
ответ дан 29 November 2019 в 01:43
поделиться
public static URL getClassURL(Class klass) {
    String name = klass.getName();
    name = "/" + convertClassToPath(name);
    URL url = klass.getResource(name);
    return url;
}

public static String convertClassToPath(String className) {
    String path = className.replaceAll("\\.", "/") + ".class";
    return path;
}

Просто вставьте это куда-нибудь и передайте ему объект Class для класса, определение которого вы хотите найти. Он должен работать независимо от того, откуда он вызван, так как он вызывает getResource () для искомого класса.

public static void main(String[] args) {
    System.out.println(getClassURL(String.class));       
}

Пример вывода: баночка: Файл: /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Classes/classes.jar /java/lang/String.class

5
ответ дан 29 November 2019 в 01:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: