У меня есть приложение веб-службы с весенней загрузкой, которое использует зависимость opensaml (старая версия, 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 моего пути к классам, поэтому я не понимаю, что происходит.