java -verbose не дает местоположение файла для каждого класса - PullRequest
3 голосов
/ 19 мая 2011

Мы пытаемся отладить некоторые проблемы со средним загрузчиком классов с помощью нашего экземпляра WAS (Websphere Application Server).

Для этого мы предоставили опцию -verbose: class, чтобы увидеть, из какого класса WAS загружается откуда.

Для большинства классов мы получаем вывод вроде

Loading class <some class> from <some jar file>

Но для некоторых классов (включая те, которые вызывают проблемы) только

Loading class <some class>

печатается.

Откуда они? Загрузите их прямо из ада или почему IBM защищает их настоящую личность?

Обновление: Класс, который мы ищем, это javax.xml.ws.Service, который действительно должен исходить из rt.jar (мы получаем java.lang.VerifyError для него)

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

Если вас интересует, какие файлы читаются JVM, вы можете использовать инструменты операционной системы, такие как strace, dtrace или lsof, для наблюдения за файлами, читаемыми процессом.Однако это не скажет вам, какие классы были загружены из этого файла.

Вам известно о Руководстве по диагностике IBM JDK? В нем содержится глава "Диагностика загрузчика классов".

3 голосов
/ 19 мая 2011

Может быть, класс, который вы хотите загрузить, не из банки? Может быть, он генерируется на лету? Имя класса может содержать подсказку ...

2 голосов
/ 19 мая 2011

Если вывод выглядит как

[Loaded $Proxy2 by instance of java.lang.reflect.Proxy]

... тогда ваши классы генерируются автоматически

...