首页 > 解决方案 > 部署到 WebLogic 时出现“weblogic.application.ModuleException: java.lang.NoSuchMethodError:org.springframework.util.MultiValueMap.addAll”

问题描述

我有许多 Spring Boot Maven 项目。它们是用于Angular/ReactUI 客户端的 REST 服务的非常简单的包装器。我使用集成的 Tomcat-9 在 Eclipse 中进行开发,然后部署到 Linux 上的 WebLogic-12c [WLS]。我使用spring-boot-starter-parent带有2.2.4.RELEASE以下组件的版本:

项目/webapps 非常相似,并且在 WLS 中都可以正常工作,尽管我们有一些类路径冲突,但能够按照WEB-INF/weblogic.xmlOracle 的建议使用类似这样的方法来解决它们:

              <wls:prefer-web-inf-classes>false</wls:prefer-web-inf-classes>
              <wls:prefer-application-packages>
                     <wls:package-name>org.slf4j</wls:package-name>
                     <wls:package-name>org.springframework.*</wls:package-name>
              </wls:prefer-application-packages>

然而,尽管配备了相同的 weblogic.xml,但最后一个项目不会部署到 WLS。它在Tomcatand中运行良好local WLS,但由于以下原因在服务器上失败:

weblogic.application.ModuleException: 


 Caused By: java.lang.NoSuchMethodError: org.springframework.util.MultiValueMap.addAll(Ljava/lang/Object;Ljava/util/List;)V


        at org.springframework.core.io.support.SpringFactoriesLoader.loadSpringFactories(SpringFactoriesLoader.java:140)

        at org.springframework.core.io.support.SpringFactoriesLoader.loadFactoryNames(SpringFactoriesLoader.java:119)

        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:429)

        at org.springframework.boot.SpringApplication.getSpringFactoriesInstances(SpringApplication.java:421)

        at org.springframework.boot.SpringApplication.<init>(SpringApplication.java:268)

我在本地 PC 上安装了两个版本的 WLS——14c,然后是 12c——就像我们在 Linux 服务器上运行的一样。有问题的项目在两者上都在本地运行,没有任何问题。

这个“坏”项目与“好”项目具有完全相同的依赖关系。事实上, 的内容WEB-INF/lib是完全一样的。到目前为止,我找不到是什么让这个项目如此特别以至于 Spring 无法初始化。

所以这是我的问题。什么可能导致此 WLS 部署问题以及解决方法。

非常感谢您的帮助。

标签: javaspring-bootmavenweblogic12c

解决方案


在我添加之后,<wls:package-name>org.springframework.*</wls:package-name>根本就没有问题......如果我首先删除了失败的部署。然而,我使用 WL 控制台上的安装选项来上传新的战争文件,然后更新以重新部署。显然,WL 在尝试更新一开始就失败的部署时,这种方法存在问题。


推荐阅读