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