Как отладить/логировать/отследить проблему с загрузкой апплета?

Недавно два наших клиента сообщили о проблемах с нашими апплетами. Глядя на консоль java-плагина, она полна ClassNotFoundException, поэтому ни один из наших кодов не выполняется.

Мне удалось воспроизвести трассировку стека, используя образ виртуального ПК с нулевым свободным пространством на диске, но проблема исчезает, когда я восстанавливаю часть дискового пространства, и пользователи говорят мне, что их диск не заполнен; они могут создавать новые файлы.

Наш апплет требует java 6, а проблема появилась с обновлениями 1, 10 и 14 jre. Мы также пробовали разные браузеры (IE и Firefox), очищая кеши браузера и java, ...

Как я могу отладить или отследить, что делает jvm для загрузки нашего апплета?

Я предполагаю, что проблема заключается в какой-то директиве безопасности для Windows, поэтому я использую Sysinternal Process Monitor для регистрации активности, но я действительно не знаю, где искать.


person Serxipc    schedule 23.07.2009    source источник


Ответы (4)


Кэш Java, скорее всего, испорчен. Откройте Java в Панели управления и избавьтесь от всех временных файлов, чтобы посмотреть, исчезнет ли он.

Можно включить вход в консоль Java для загрузки апплетов, что очень помогает (даже если плагин чрезвычайно загадочен). См. http://java.sun.com/javase/6/docs/technotes/guides/deployment/deployment-guide/tracing_logging.html

person Thorbjørn Ravn Andersen    schedule 23.07.2009
comment
Спасибо! Я забыл включить трассировку в полной тестовой среде диска. Теперь я попробовал это, но он показывает только «java.io.IOException: Ошибка записи». Нет подробностей о том, какой путь пытался записать или о причине ошибки, поэтому я думаю, что это не даст достаточно информации, если мы включим трассировку на клиентском компьютере. Является ли это трассировкой максимума, который мы можем получить от JVM? - person Serxipc; 24.07.2009
comment
Помогла ли очистка кеша Java вашим пользователям? - person Thorbjørn Ravn Andersen; 24.07.2009
comment
Нет. Мы уже пытались очистить кеш java из панели управления java и удалить все файлы jar_cache*.tmp из каталога temp. Я предполагаю, что это какая-то директива безопасности Windows или сети, но я не знаю, что делать дальше, поэтому я пытаюсь получить подробный журнал того, что происходит. - person Serxipc; 24.07.2009
comment
Если вы имеете дело с подписанными jar-файлами (чтобы выйти из песочницы), цепочка сертификатов может быть нарушена. Недавно я заглянул внутрь кода запуска JNLP, и все, что вы можете получить на консоли Java, должно быть явно закодировано в средстве запуска. Я не знаком с новым плагином для браузера. Я бы посоветовал получить исходный код плагина, который вы используете, и точно узнать, что означают выходные данные журнала, которые вы видите. Примечание. OpenJDK НЕ подходит, так как эти компоненты не находятся под GPL. - person Thorbjørn Ravn Andersen; 24.07.2009

Я просматривал исходный код плагина из JDK и обнаружил, что в журналах доступна дополнительная информация об отладке, устанавливающая переменную среды JPI_PLUGIN2_DEBUG. К сожалению, я все еще вижу только ClassNotFound исключений.

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

person Serxipc    schedule 27.07.2009

были подобные проблемы некоторое время назад. В нашем случае проблема заключается в том, как тег апплета установлен на веб-странице. Если он находится в неправильном порядке или содержит атрибут codebase, он завершается с ошибкой 6u10+. Это работает для нас:

<applet name="DMGANTT" archive="DMGantt.zip" code="dm.applet.DMGanttApplet" 
 width='100%' height='100%' mayscript="mayscript">
person akarnokd    schedule 28.07.2009
comment
Я использую сценарий deployJava.js для записи тегов апплета, и мы не добавляем атрибут codebase. Как атрибуты могут быть в неправильном порядке? У вас есть пример, который не работает из-за порядка изнашивания? - person Serxipc; 28.07.2009
comment
Да, если я меняю порядок кода и архива, почему-то 6u10 ищет DMGanttApplet на сервере, а не в предоставленном архиве. Какие классы отсутствуют - какова трассировка стека вашей ошибки? - person akarnokd; 28.07.2009
comment
Я попробовал ваше предложение с порядком атрибутов, но проблема не устранена. Класс, не найденный в трассировке стека, указан в атрибуте кода, поэтому ничего не выполняется. Я вижу в журнале сервера, что запрошена банка с классами. На самом деле jar запрашивается столько раз, сколько апплетов на странице, но при просмотре страницы с работающего компьютера он запрашивается только один раз. - person Serxipc; 28.07.2009
comment
@ kd304: Просто из любопытства, вы использовали или пробовали параметр codebase_lookup? java.sun.com/javase/ 6/docs/technotes/guides/plugin/ Все наши апплеты запускаются с этим параметром, установленным в true, поэтому, если плагин не может найти класс или ресурс, он не запрашивает их у сервера. - person Serxipc; 28.07.2009
comment
Нет, поскольку переупорядочения атрибутов и удаления параметров кодовой базы было достаточно, чтобы все снова заработало. - person akarnokd; 28.07.2009
comment
Ну, я проголосовал за некоторые из ваших других ответов и вопросов, чтобы поблагодарить вас за вашу помощь. Я не считаю правильным голосовать за этот конкретный ответ, поскольку он действительно не помог решить мою проблему. Спасибо. - person Serxipc; 28.07.2009
comment
@Serhii: Спасибо, извини, что не могу помочь. Есть так много вещей, которые могут пойти не так с браузером-java, например. поврежденный выпуск обновления, плохой реестр и т. д. Вы также можете попробовать запустить свой апплет в Eclipse в режиме отладки и проверить, работает ли он. - person akarnokd; 28.07.2009

У нас была аналогичная проблема с одним из наших клиентов. Мы обнаружили странную ошибку в некоторых версиях Java, связанную с настройкой прокси на клиенте. Подробности смотрите в этой статье

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6723715

Кроме того, наш апплет не работал с новыми версиями по другой причине.

Теперь в подобных случаях я прошу их проверить javatester.org, чтобы увидеть, нормально ли загружаются апплеты (в целом) в их браузере. Если эта страница загружается нормально, это проблема нашего апплета (или страницы). В противном случае проблема в их конфигурации. Я все равно помогаю им, но их легче отлаживать.

person Gonfva    schedule 28.08.2009