2012-03-13 126 views
1

我正在尝试部署到Weblogic 10.3.5的Web应用程序。其中一个Maven依赖项是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依赖的其余部分似乎是工作,但我不能确定是什么问题。

任何人都可以协助排除故障吗?环境是带有M2E插件的Eclipse,Weblogic Server已集成到Eclipse中。

更新:在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'是什么样子? – 2012-03-13 16:41:40

+0

已更新的问题。 – Jason 2012-03-13 16:47:20

+0

1.可以告诉解析哪个版本的番石榴(查看m2e插件)2.您确定在WebLogic中部署的应用程序中包含'guava.jar'吗? – korifey 2012-03-13 16:52:20

回答

3

转到您的weblogic文件夹weblogic-home>模块,如果有com.google.common .... jar文件,只需将其删除并将其替换为guava.jar文件,并且必须重命名带有旧com.google.common ...... jar名称的guava文件(cuz weblogic正在查找此名称,但与您的guava文件冲突)。

我有同样的问题here

+0

我们遇到了与WLS提供的spring.jar相同的问题,但我一直试图找到不同的解决方案。删除服务器提供的罐子让我感觉像用电锯进行手术。 – Jason 2012-11-26 13:00:17

+0

所以不要删除它,首先将它剪切并粘贴到其他地方,并像我提到的那样做,如果它的工作很开心!如果不是将它粘贴回原来的位置。 – 2012-12-13 18:39:08

11
  • 是它的类加载器问题(应用对比的WebLogic类加载)
  • guava库和com.google.common含有相同的类
  • 的WebLogic有com.google.common_1.0.0.0_0-6.jarcom.google.common_1.1.0.0_0-6.jar在它的类路径,模块目录。 (取决于WebLogic版本,但jar内容相同,只有META-INF \ MANIFEST.MF不同)
  • 在WebLogic Classloader Analysis Tool(CAT)中找不到此库。我不确定这是为什么...
  • 为什么不使用WebLogic内置功能的帮助下FilteringClassLoaders - prefer-application-packages

你需要像这样添加到您的weblogic.xmlweblogic-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:前缀...我删除它,它工作正常。 – 2013-10-29 19:29:04

+2

我有类似的问题,并希望使这项工作。问题是我不知道哪个xml添加到此。我正在使用weblogic 12c我尝试将其添加到基本xml,临时域xml,以及在我的项目的WEB-INF中创建一个新的xml。前两个没有工作。 dtd最后一条强制执行表明,prefer-application-packages无效。 – user3056052 2014-03-19 13:48:33

+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 2017-04-11 08:02:47