Java Guava和Weblogic:ClassNotFoundException
我正在尝试开发一个部署到WebLogic10.3.5的web应用程序。maven的一个依赖项是番石榴 不幸的是,在尝试发布项目时,weblogic会引发以下异常:Java Guava和Weblogic:ClassNotFoundException,java,maven,weblogic,guava,Java,Maven,Weblogic,Guava,我正在尝试开发一个部署到WebLogic10.3.5的web应用程序。maven的一个依赖项是番石榴 不幸的是,在尝试发布项目时,weblogic会引发以下异常: java.lang.ClassNotFoundException: com.google.common.eventbus.EventBus at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:297) at w
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服务器集成到Eclipse中
更新:pom.xml中的番石榴条目:
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>11.0.2</version>
</dependency>
番石榴
. 似乎WLS使用了一些google commons库
我试图通过在weblogic.xml文件中进行更改来强制它使用我的版本,但它似乎不起作用。转到您的weblogic文件夹weblogic home>modules,如果有com.google.common….jar文件,只需将其删除并替换为guava.jar文件,您必须使用旧的com.google.common……jar名称重命名guava文件(因为weblogic正在寻找这个名称,但它与您的guava文件冲突)
我也遇到了同样的问题转到您的weblogic文件夹,weblogic home>模块,如果有com.google.common…jar文件,只需删除它并替换为guava.jar文件,您必须用旧的com.google.common…jar名称重命名guava文件(因为weblogic正在查找此名称,但它与您的guava文件冲突)。
我也遇到了同样的问题
是的,这是类装入器问题(应用程序与WebLogic类装入)
guava
库和com.google.common
包含相同的类
WebLogic在其类路径的modules目录中有com.google.common\u 1.0.0\u 0-6.jar
或com.google.common\u 1.1.0.0\u 0-6.jar
(取决于WebLogic版本,但jar内容相同,只有META-INF\MANIFEST.MF不同)
您在WebLogic(CAT)中找不到此库。我不确定这是为什么
为什么不在FilteringClassLoaders的帮助下使用WebLogic内置功能
如果您在EAR应用程序中,则需要将类似的内容添加到weblogic.xml
或weblogic应用程序.xml
<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*
然后重新部署应用程序
它对我们有用
- 优点:无需用com.google.common*.jar文件替换和重命名magic,这是自杀的一种方式
希望能有帮助
有关更多信息,请参阅链接:
- 是的,这是类装入器问题(应用程序与WebLogic类装入)
guava
库和com.google.common
包含相同的类
- WebLogic在其类路径的modules目录中有
com.google.common\u 1.0.0\u 0-6.jar
或com.google.common\u 1.1.0.0\u 0-6.jar
(取决于WebLogic版本,但jar内容相同,只有META-INF\MANIFEST.MF不同)
- 您在WebLogic(CAT)中找不到此库。我不确定这是为什么
- 为什么不在FilteringClassLoaders的帮助下使用WebLogic内置功能
如果您在EAR应用程序中,则需要将类似的内容添加到weblogic.xml
或weblogic应用程序.xml
<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*
然后重新部署应用程序
它对我们有用
- 优点:无需用com.google.common*.jar文件替换和重命名magic,这是自杀的一种方式
希望能有帮助
有关更多信息,请参阅链接:
您的pom.xml
中的依赖关系是什么样子的?1.可以告诉guava的解决版本(查看m2e插件)2.您确定guava.jar
包含在WebLogic部署的应用程序中吗?在properties->Java Build Path,Libraries选项卡下,列表是针对guava-11.0.2.jar的。老实说,我不确定在哪里可以找到实际的WebLogic部署,因为我不确定它是否指向maven目标目录。您的pom.xml
看起来像?1.可以告诉我们guava的解析版本(查看m2e插件)2.您确定guava.jar
包含在WebLogic部署的应用程序中吗?在properties->Java Build Path,Libraries选项卡下,列表是针对guava-11.0.2.jar的。老实说,我不确定在哪里可以找到实际的WebLogic部署,因为我不确定它是否指向maven目标目录。我们在他是WLS提供的spring.jar,但我一直在尝试找到一个不同的解决方案。删除服务器提供的jar让我觉得就像用电锯做手术一样。所以根本不要删除它,先将它剪切并粘贴到其他地方,然后按照我提到的做,如果它工作正常,那就开心吧!如果不只是将它粘贴回以前的位置。我们与WLS提供的spring.jar有相同的问题,但我一直在尝试找到不同的解决方案。删除服务器提供的jar让我觉得就像用电锯做手术一样。所以不要删除它,首先将它剪切并粘贴到其他地方,然后按照我提到的做,如果它工作正常,请高兴!如果不是,请将它粘贴回和以前一样。对我来说也很有用,但我的weblogic.xml不使用wls:前缀…我删除了它,它工作得很好。我有一个类似的问题,我想让它工作。问题是我不知道要将它添加到哪个xml。我使用的是weblogic 12c。我尝试将它添加到基本xml、临时域xml以及在我的项目的WEB-INF中创建一个新的xml。前两个不起作用。dtd强制执行的最后一个表明首选应用程序包无效。对于WAR:WEB-INF/weblogic.xml对于EAR应用程序META-INF/weblogic-application.xml,请检查您的xml结构或dtd验证器。O