Гуава и Weblogic:ClassNotFoundException

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

К сожалению, после попытки опубликовать проект, 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 ответа

  • Да, это проблема загрузчика классов (приложение против загрузки классов 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/

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

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

Другие вопросы по тегам