Weblogic服务器guava NoSuchMethodError

4

我正在尝试在Weblogic服务器上部署一个包含war文件的Web项目。但是我遇到了如上所述的错误。

java.lang.NoSuchMethodError: com.google.common.util.concurrent.MoreExecutors.directExecutor()Ljava/util/concurrent/Executor;
    at com.google.common.eventbus.EventBus.<init>(EventBus.java:138)

我尝试了guava的最新和最旧版本。在最旧的版本中,我遇到了eventbus错误(在旧版本中没有定义该方法)。在最新版本中,我再次遇到了相同的错误。
如何解决这个问题?
编辑:在我的编辑器(IntelliJ)中运行时,它清晰地运行,在weblogic服务器上运行时,部署时出现此错误。
更新:
我刚刚在我的WEB-INF路径中添加了一个类似上面的weblogic.xml文件。不需要任何其他配置,感谢@luc14n0,问题已经解决。
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.0/weblogic-web-app.xsd">

<container-descriptor>
    <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

</weblogic-web-app>

可能是重复的问题:如何修复NoSuchMethodError? - Yosef Weiner
我认为不行,因为它在我的编辑器中明显可以运行。但是在部署到Weblogic服务器上时却无法工作。 - stephan
这意味着你的编辑器和部署之间正在以不同的方式构建类路径。 - Yosef Weiner
1个回答

7

Weblogic 12c (12.1.3)自带Oracle/Middleware/Oracle_Home/wlserver/modules/com.google.common_1.2.0.0_11-0-2.jar的Guava依赖。

通过告诉WebLogic您希望使用自己的版本,您可以避免加载错误库的冲突。

对于EAR文件,请将以下内容添加到application.xml中:

<prefer-application-packages>
  <package-name>com.google.common.*</package-name>
</prefer-application-packages>

如果出现WAR文件,需在weblogic.xml中添加以下内容:

<container-descriptor>
  <prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>

1
@enes 它进入_src/main/webapp/WEB-INF/weblogic.xml_。 - Luciano van der Veekens

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接