апплет не может загрузить класс из jar - PullRequest
3 голосов
/ 31 марта 2009

Некоторые пользователи жалуются на то, что апплет больше не работает. Когда они просматривают консоль java, их встречает java.lang.noClassDefFoundError и, проверяя мой журнал доступа, я вижу, что они скачали файл jar, содержащий класс, а затем выдать запрос на получение для определенного класса.

Разные пользователи разбиваются на разные классы.

Некоторые пользователи в порядке.

Любые идеи, которые могут вызвать это / исправить это.

Я проверил, чтобы убедиться, что файл находится в их Java-кеше, очистил кеш и т. Д. Кажется, ничто не может их исправить.

Если они попадают на сайт, он тоже ломается.

Ответы [ 4 ]

2 голосов
/ 02 апреля 2009

Jar-файл поврежден при транспортировке. Мы смотрим на получение патчей от oracle / bea для сервера.

Похоже, что если соединение слишком медленное (скорость модема), weblogic сообщит об окончании передачи, отправив пакет с len = 0.

Сеть сообщит java, сообщив, что загрузка успешно завершена, а затем java завершится неудачно с java.lang.noClassDefFoundError.

1 голос
/ 31 марта 2009

Это может произойти, если сам класс может быть загружен, но некоторая зависимость этого класса не может быть. Существуют ли внешние JAR-файлы, являющиеся зависимостями?

0 голосов
/ 31 марта 2009

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

При развертывании новой версии апплета в оперативной конфигурации я выполняю следующее:

  1. Убедитесь, что страница, содержащая апплет, не кэширована - используйте Методы HTTP без кэширования . Вы можете захотеть повторно развернуть страницу с этими заголовками, чтобы убедиться, что это не так.
  2. Разверните файл jar с другого URL-адреса для каждого обновления (я кодирую номер версии в каталоге, но вы также можете переименовать файл jar).
  3. Если апплет выполняет какое-либо взаимодействие клиент-сервер, убедитесь, что вы проверили номера версий и сообщили о неверной версии пользователю.

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

  1. Нажмите обновить в окне браузера.
  2. Перезапустить все окна браузера
  3. Удалить все Виртуальные машины Java, найденные в разделе «Установка и удаление программ», и переустановить последнюю версию Java (да, они должны делать это на свой страх и риск!)
0 голосов
/ 31 марта 2009

Вы уверены, что файл JAR содержит все необходимые классы? Откройте его в своем любимом приложении Zip и дважды проверьте. Возможно, недавняя сборка этой банки была испорчена и в ней не все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...