Гуава и Weblogic: ClassNotFoundException - PullRequest
1 голос
/ 13 марта 2012

Я пытаюсь работать с веб-приложением, которое развертывается на Weblogic 10.3.5. Одна из зависимостей maven - это гуава.

К сожалению, при попытке опубликовать проект weblogic выдает это исключение:

java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:270)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:64)

Остальные мои maven зависимости кажутся работающими, но я не уверен, в чем проблема.

Может ли кто-нибудь помочь в устранении неполадок? Среда - Eclipse с плагином M2E, Weblogic Server интегрирован в Eclipse.

Обновление : запись гуавы в pom.xml:

    <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>11.0.2</version>
    </dependency>

Я включил другую библиотеку (commons-lang), и она работала нормально.

Обновление 2 : Это может быть проблема загрузчика классов. Я получил подсказку из этого блога: http://blog.eisele.net/2011/12/running-richfaces-410final-on-weblogic.html. Кажется, WLS использует библиотеку google-commons.

Я пытаюсь заставить его использовать мою версию, внеся изменения в файл weblogic.xml, но, похоже, он не работает.

Ответы [ 2 ]

11 голосов
/ 31 июля 2013
  • Да, это проблема загрузчика классов (загрузка приложения или WebLogic)
  • guava библиотеки и com.google.common содержит те же классы
  • В WebLogic есть com.google.common_1.0.0.0_0-6.jar или com.google.common_1.1.0.0_0-6.jar вэто classpath, в каталоге модулей.(в зависимости от версии WebLogic, но содержимое jar-файла одинаково, только META-INF \ MANIFEST.MF отличается)
  • Эту библиотеку нельзя найти в WebLogic Инструмент анализа Classloader (CAT).Я не уверен, почему это так ...
  • Почему бы не использовать встроенную функцию WebLogic с помощью FilteringClassLoaders - предпочитать-пакеты приложений ?

вам нужно добавить что-то подобное в ваш weblogic.xml или weblogic-application.xml, если вы находитесь в приложении EAR

<wls:container-descriptor>
    <wls:prefer-application-packages>
            <wls:package-name>com.google.common.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

Затем повторно разверните приложение,

У нас это работает.

  • плюсы: нет необходимости заменять и переименовывать магию на файлы com.google.common * .jar ... этоспособ самоубийства ...

Надеюсь, это поможет.

Для получения дополнительной информации см. ссылку:
http://www.lucubratory.eu/guava-and-weblogic12c/

3 голосов
/ 26 ноября 2012

Перейдите в папку weblogic, модули weblogic-home> и, если есть файл jar com.google.common ...., просто удалите его и замените его на файл guava.jar, и вам придется переименовать файл guava со старым именем com.google.common ...... jar (cuz weblogic ищет это имя, но оно конфликтует с вашим файлом guava).

У меня была такая же проблема здесь

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