我有一个使用opensaml依赖项(旧版本2.2.3)的spring boot Web服务应用程序。当我部署到Weblogic时,我得到:
Caused by: java.lang.NoClassDefFoundError: org/apache/log4j/Logger
at org.opensaml.xml.XMLConfigurator.<clinit>(XMLConfigurator.java:60) ~[com.oracle.weblogic.security.opensaml2.jar:na]
我执行的解决方法与此用户相同:https://stackoverflow.com/a/20913280/2968729。我将其重命名为com.oracle.weblogic.security.opensaml2.jar,因此它将被忽略。
如错误所述,weblogic拥有自己的opensaml2.jar
,它使用log4j
,这在我的应用程序类路径中不存在,这就是失败的原因。
因此,重点是:我既不想添加log4j也不想使用com.oracle.weblogic.security.opensaml2.jar
,而是要从类路径中添加我的opensaml。实现此目标的正确方法是什么?
weblogic.xml:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app
xmlns:wls="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.9/weblogic-web-app.xsd">
<wls:container-descriptor>
<wls:prefer-application-packages>
<wls:package-name>org.slf4j</wls:package-name>
<wls:package-name>ch.qos.logback.*</wls:package-name>
<wls:package-name>org.opensaml</wls:package-name>
<wls:package-name>org.apache.cxf</wls:package-name>
</wls:prefer-application-packages>
</wls:container-descriptor>
</wls:weblogic-web-app>
我已经指定使用我的类路径的opensaml,所以我不知道发生了什么。
答案 0 :(得分:0)
太愚蠢了:weblogic.xml放在错误的位置,因此被忽略了。我把它放在src / main / resource文件夹中。
它必须在src/main/webapp/WEB-INF/weblogic.xml
请注意,这里有webapp
个文件夹!