2016-01-21 2 views
0

У нас есть производственный сервер, который является экземпляром websphere, где мы скопировали банку (скажем, c.jar, которая уже существует в EAR и теперь уже отключена) до EAR, которая уже развернута как горячее исправление , У меня есть класс A, ссылающийся на класс B в том же Jar, что и c.jar, и при загрузке класса A класс B не смог найти и в результате появился NoClassFoundError. Горячее развертывание на сервере отключено. Тем не менее, после перезапуска сервера A может найти B. Любое имущество, которое нам не хватает? Почему класс B не найден, хотя присутствует в той же банке, но после перезапуска он может найти. Кроме того, перед копированием jar, старый c.jar отлично работает с загруженным классом A и классом B. Мы используем протокол 6.1Проблема с загрузкой класса в websphere

+0

Вы перезапустили приложение после изменений? См. Здесь - http://www-01.ibm.com/support/knowledgecenter/SSAW57_8.5.5/com.ibm.websphere.nd.doc/ae/trun_app_hotupgrade_app.html?lang=en для получения более подробной информации. Копирование ящиков напрямую не рекомендуется. Также 6.1 - это выход из поддержки. Вы должны перейти на более новую версию. – Gas

+0

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

ответ

0

При запуске сервера приложений он создает файлы классов приложения, которые были развернуты в вашем экземпляре JVM WAS, чтобы сделать его доступным во время выполнения. По мере изучения приложения загружаются другие классы. когда вы удаляете/перезаписываете файл jar, который вы нарушаете ссылку, и это причина, по которой другие классы не могли найти классы там в c.jar. при перезагрузке JVM новые файлы классов загружаются в среду выполнения JVM, и вы обнаружите, что она доступна.

+0

Спасибо за объяснение, но этого вопроса раньше не было. Это происходит только сейчас –

Смежные вопросы