Java: Обнаружение *, почему* класс загружается

У меня в настоящее время есть проблема, что у меня есть (частичная) программа, которая пытается загрузить класс, но сбои, потому что она не может найти этот класс. Смотря на отслеживание стека, я не вижу никакой конкретной причины того, почему VM пытается загрузить этот конкретный класс в первом месте. Есть ли какие-либо инструменты, которые позволили бы мне выяснить, почему конкретный класс загружается?

Подсказка: Я уже получаю отслеживание стека в точном месте, где JVM пытается загрузить класс (через агент). Однако отслеживание стека не содержит номеров строки. Поэтому я только знаю, какой метод инициировал загружаемый класс, не который оператор. Затем даже знание оператора не может быть достаточно. Отдельный оператор может заставить класс быть загруженным во многих отношениях, потому что иногда VM должен загрузить часть переходного закрытия классов.

10
задан user66237 10 January 2010 в 08:47
поделиться

3 ответа

Запустите вашу программу с флагами -XX: + TraceClassLoading и -XX: + TraceClassResolution . Это создаст БОЛЬШОЙ вывод, который будет выглядеть следующим образом:

[Loaded com.kdgregory.example.memory.PermgenExhaustion$MyClassLoader from file:/home/kgregory/Workspace/Website/programming/examples/bin/]
RESOLVE com.kdgregory.example.memory.PermgenExhaustion$MyClassLoader java.net.URLClassLoader
RESOLVE java.net.URLClassLoader java.lang.Class URLClassLoader.java:188

Вам нужно будет отследить цепочку сообщений RESOLVE для определенного класса. Или, что более вероятно, вы увидите ошибку, когда ваша программа попытается загрузить класс, которому предшествуют сообщения о разрешении для класса, который его загружает).

21
ответ дан 3 December 2019 в 16:10
поделиться

Загрузчики классов

Если это среда там, где в игре задействовано несколько загрузчиков классов (например, веб-приложение), следует быть осторожным. Расскажите, пожалуйста, что это за приложение.

ресурс

Сообщите нам, где находятся jar-файлы (структура вашего файла / каталога) и какой класс загружается. Вы загружаете его динамически, используя Class.forName? или используя spring или другой фреймворк IOC? Это главный класс?

Некоторое предыдущее тестирование (чтобы помочь нам)

Возможно, вы можете протестировать некоторые вещи с помощью Class.getResource () из основного метода. Если ваш класс - foo.bar.Clazz, попробуйте Class.getResource ("/ foo / bar / Clazz.class"), чтобы узнать, возвращает ли он что-то действительное или нет. Попробуйте сделать то же самое с классом, который загружает ваш неудачный класс, чтобы увидеть, где вы ожидаете.

0
ответ дан 3 December 2019 в 16:10
поделиться

Отсутствует официальная документация по языку синтаксиса PowerBuilder, которая отображается при редактировании исходного кода. Большинство, которые работают с ним, просто должны использовать проб и ошибок, чтобы выяснить это. Ранее в группах новостей задавался вопрос о синтаксическом файле, чтобы для него можно было построить синтаксический анализ, но он так и не был предоставлен. Вот сообщение об этом

Я полагаю, что следующая версия PowerBuilder будет отходить от этого синтаксиса в более XML-формат (и переходить от PBL в виде двоичных файлов к текстовому формату).

-121--4859923-

В дополнение к вашей ссылке О "Рейли, ссылка не менее авторитетна, чем книга" Programming Perl "Ларри Уолла, утверждает, что обратная косая черта интерполяции не происходит в отдельных цитируемых последовательностях.

... much like Unix shell quotes: double quoted string literals are subject to   
backslash and variable interpolation; single quoted strings are not   
(except for \' and \\, so that you may ...)  

Programing Perl, 2nd ed, 1996 page 16

Поэтому было бы интересно посмотреть, что ваш Perl делает с
print 'Двойная обратная косая черта n :\\n';

Как указано выше, покажите выходные данные из 'perl -v'.

И я полагаю, что я перепутал программное обеспечение редактора форума, потому что последний Perl 'print' должен был отступить.

-121--4557551-

Можно попробовать инструмент статического анализа, например JDepend, чтобы узнать, какие классы имеют ссылки на этот класс.

5
ответ дан 3 December 2019 в 16:10
поделиться
Другие вопросы по тегам:

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