java - Guava 和 Weblogic :ClassNotFoundException

标签 java maven weblogic guava

我正在尝试开发部署到 Weblogic 10.3.5 的 Web 应用程序。 Maven 依赖项之一是 Guava。

不幸的是,在尝试发布项目时,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 中的 Guava 条目:

    <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 文件强制它使用我的版本,但它似乎不起作用。

最佳答案

  • 是的,这是类加载器问题(应用程序与 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 (猫)。我不确定为什么会这样......
  • 为什么不在 FilteringClassLoaders 的帮助下使用 WebLogic 内置功能 - prefer-application-packages

如果您在 EAR 应用程序中,您需要将类似这样的内容添加到您的 weblogic.xmlweblogic-application.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*.jar 文件替换和重命名 magic...那是一种自杀方式...

希望对您有所帮助。

有关详细信息,请参阅链接:
https://www.rational-pi.be/2013/03/guava-and-weblogic12c/

关于java - Guava 和 Weblogic :ClassNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688207/

相关文章:

java - 为 WebLogic Server 编写 Web 服务

jakarta-ee - 单个应用程序服务器实例中不同应用程序中的 EJB 本地/远程接口(interface)

maven - 如何在 mvn 中运行脚本作为测试

java - 如何保护 Java/Javafx 代码不被最终用户看到?

java - 运行 Spring Boot 应用程序时出现兼容版本问题,但在 pom 中只有版本

java - 当我尝试使用 hibernate 将字段插入表时出错

java - 如何从具有多个子模块的 Maven 项目创建单个库 jar?

java - Citrus 框架 - 无法成功构建示例

java - 贪婪线程在 WebLogic 下抓取过多的 JMS 消息

java - Hibernate将数据保存到数据库SQLException