2012-03-13 4 views
1

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

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

Update: запись гуавы в pom.xml:

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

Я включил другую библиотеку (Обще-языки), и она работала отлично.

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

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

+0

Что зависимость в вашем 'pom.xml' выглядеть? –

+0

обновленный вопрос. – Jason

+0

1. Скажите, какая версия guava разрешена (см. Плагин m2e). 2. Вы уверены, что 'guava.jar' включен в приложение, развернутое в WebLogic? – korifey

ответ

3

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

я была такая же проблема here

+0

У нас такая же проблема с spring.jar, предоставляемая WLS, но я пытался найти другое решение. Удаление ящиков, предоставляемых сервером, поражает меня как выполнение операции с бензопилой. – Jason

+0

Так что не удаляйте его вообще, сначала вырезайте и вставьте его где-то в другом месте, и сделайте так, как я упомянул, и если его работа будет счастлива! если не просто вставить его обратно в то же место, что и раньше. –

11
  • Да, это загрузчик классов вопрос (приложение против 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 в его пути к классам, в каталоге модулей , (в зависимости от версии WebLogic, но содержимое баннера такое же, только META-INF \ MANIFEST.MF отличается)
  • Вы не можете найти эту библиотеку в WebLogic Classloader Analysis Tool (CAT). Я не уверен, почему это так.
  • Почему бы не использовать встроенную функцию WebLogic с помощью FilteringClassLoaders - prefer-application-packages?

вам нужно добавить что-то вроде этого, чтобы ваш 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/

+0

Работал и для меня, но мой weblogic.xml не использует wls: prefix ... я удалил его, и он работал нормально. –

+2

У меня такая же проблема, и я хотел бы сделать эту работу. Проблема в том, что я не знаю, какой xml добавить. Я использую weblogic 12c. Я попытался добавить это в базовый xml, xml домена temp, а также создать новый xml в WEB-INF для моего проекта. Первые 2 не работали. В последнем случае dtd-принудительный контроль указал, что пакеты предпочтений-приложений недействительны. – user3056052

+0

Для WAR: WEB-INF/weblogic.xml Для приложения EAR META-INF/weblogic-application.xml Проверьте структуру xml или проверку подлинности dtd. Oracle документация имеет этот элемент: https://docs.oracle.com/middleware/1221/wls/WBAPP/weblogic_xml.htm#WBAPP660 XSD схема имеет тоже: http://xmlns.oracle.com/ weblogic/weblogic-web-app/1.9/weblogic-web-app.xsd -> эта группа: -> xs: include'd from schemaLocation = "http://xmlns.oracle.com/weblogic/weblogic-javaee/1.8/weblogic-javaee.xsd" – Casey

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