Weblogic服务器guava NoSuchMethodError

时间:2017-05-10 06:02:39

标签: java guava web-deployment weblogic12c

我正在尝试在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)

我尝试了最新和最古老的番石榴版本。在最古老的版本中,我遇到了eventbus错误(在旧版本中没有定义此方法)。在最新版本中,我再次遇到了同样的错误。

我该如何解决这个问题?

编辑:它在我的编辑器(IntelliJ)中运行清楚,当我尝试在weblogic服务器上运行它时,我在部署中遇到此错误。

更新:

我刚刚在WEB-INF路径中添加了如上所述的weblogic.xml文件。不需要任何其他的configurasyon。由于@ 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>

1 个答案:

答案 0 :(得分:4)

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>