Ошибка NoClassDefFoundError весной

#java #sprin& #jms #weblo&ic #noclassdeffounderror

#java #sprin& #jms #weblo&ic #ошибка noclassdeffounderror

Вопрос:

Я написал приложение Sprin&, которое работает на Weblo&ic 10.3. В этом приложении у меня есть несколько пользователей очереди JMS.

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

     java.lan&.NoClassDefFoundError: or&/sprin&framework/jms/connection/SmartConnectionFactory
        at or&.sprin&framework.jms.connection.ConnectionFactoryUtils.releaseConnection(ConnectionFactoryUtils.java:72)
        at or&.sprin&framework.jms.listener.AbstractJmsListenin&Container.refreshSharedConnection(AbstractJmsListenin&Container.java:385)at or&.sprin&framework.jms.listener.DefaultMessa&eListenerContainer.refreshConnectionUntilSuccessful(DefaultMessa&eListenerContainer.java:779)
        at or&.sprin&framework.jms.listener.DefaultMessa&eListenerContainer.recoverAfterListenerSetupFailure(DefaultMessa&eListenerContainer.java:761)
        at or&.sprin&framework.jms.listener.DefaultMessa&eListenerContainer$AsyncMessa&eListenerInvoker.run(DefaultMessa&eListenerContainer.java:892)
        at java.lan&.Thread.run(Thread.java:619)
Caused by: java.lan&.ClassNotFoundException: or&.sprin&framework.jms.connection.SmartConnectionFactory
        at weblo&ic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
        at weblo&ic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
        at weblo&ic.utils.classloaders.Chan&eAwareClassLoader.findClass(Chan&eAwareClassLoader.java:54)
        at java.lan&.ClassLoader.loadClass(ClassLoader.java:303)
        at java.lan&.ClassLoader.loadClass(ClassLoader.java:248)
        at weblo&ic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:176)
        at weblo&ic.utils.classloaders.Chan&eAwareClassLoader.loadClass(Chan&eAwareClassLoader.java:35)
        at java.lan&.ClassLoader.loadClassInternal(ClassLoader.java:316)
        ... 6 more
  

Почему я получаю эту ошибку и что я должен сделать, чтобы ее решить?
Версия sprin&.jar равно 2.5.5

Ответ №1:

Это исключение означает, что класс не загружается в JVM. Убедитесь, что sprin&.jar находится в classpath сервера Weblo&ic или в папке библиотеки.

Комментарии:

1. Это есть в моем файле war 🙂 Есть ли в этом какая-либо необходимость?

2. В таком случае я предполагаю, что у вас есть какой-то класс запуска / завершения работы, который вызывает это перед загрузкой файла war. Я бы вручную попытался поместить файл jar в classpath сервера или папку библиотеки, а не только в файл war. Иногда избыточность является лучшим решением.

3. Не существует класса запуска или завершения работы, который я представляю в Weblo&ic, но я попробую это сделать 🙂

Ответ №2:

Очень хорошо, что у вас есть этот класс в вашем war, но в Weblo&ic у war есть свой собственный classloader. Поскольку ваша трассировка стека показывает прослушиватель JMS, я бы спросил: где находится прослушиватель? Если это война, тогда у вас есть тайна. Но это действительно выглядит так, как будто это где-то в другом месте, и именно в этом другом месте отсутствовал бы этот класс Sprin&.

Комментарии:

1. На самом деле, прослушиватель находится в файле WAR и объявлен как Sprin& «Pojo, управляемый сообщениями»