【发布时间】:2023-03-10 03:49:01
【问题描述】:
我有一个使用 opensaml 依赖项的 Spring Boot Web 服务应用程序(旧版本,2.2.3)。当我部署到 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,所以我不明白发生了什么。
【问题讨论】:
标签: java spring-boot weblogic opensaml