java.lang.NoClassDefFoundError: org/apache/log4j/Level - slf4j?

Я пытаюсь развернуть мое приложение, но оно выдает ошибку: не удалось создать экземпляр SLF4J LoggerFactory. Исключение:

java.lang.NoClassDefFoundError: org/apache/log4j/Level
    at org.slf4j.impl.StaticLoggerBinder.<init>(StaticLoggerBinder.java:75)
    at org.slf4j.impl.StaticLoggerBinder.<clinit>(StaticLoggerBinder.java:45)
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128)
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107)
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281)
    at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:197)
    at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.java:133)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:72)
    at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:452)
    at weblogic.persistence.BasePersistenceUnitInfo.initializeEntityManagerFactory(BasePersistenceUnitInfo.java:445)
    at weblogic.persistence.BasePersistenceUnitInfo.init(BasePersistenceUnitInfo.java:119)
    at weblogic.persistence.BaseJPAIntegrationProvider.createPersistenceUnitInfo(BaseJPAIntegrationProvider.java:53)
    at weblogic.persistence.AbstractPersistenceUnitRegistry.storeDescriptors(AbstractPersistenceUnitRegistry.java:420)
    at weblogic.persistence.AbstractPersistenceUnitRegistry.loadPersistenceDescriptor(AbstractPersistenceUnitRegistry.java:339)
    at weblogic.persistence.ModulePersistenceUnitRegistry.<init>(ModulePersistenceUnitRegistry.java:67)
    at weblogic.ejb.container.deployer.EJBModule.setupPersistenceUnitRegistry(EJBModule.java:190)
    at weblogic.ejb.container.deployer.EJBModule$1.execute(EJBModule.java:297)
    at weblogic.persistence.PersistenceUnitRegistryInitializer.setupPersistenceUnitRegistries(PersistenceUnitRegistryInitializer.java:62)
    at weblogic.ejb.container.deployer.EJBModule.prepare(EJBModule.java:394)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:295)
    at weblogic.application.internal.ExtensibleModuleWrapper$PrepareStateChange.next(ExtensibleModuleWrapper.java:285)
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
    at weblogic.application.internal.ExtensibleModuleWrapper.prepare(ExtensibleModuleWrapper.java:109)
    at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:100)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:172)
    at weblogic.application.internal.flow.ModuleStateDriver$1.next(ModuleStateDriver.java:167)
    at weblogic.application.utils.StateMachineDriver$ParallelChange.run(StateMachineDriver.java:80)
    at weblogic.work.ContextWrap.run(ContextWrap.java:40)
    at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:550)
    at weblogic.work.ExecuteThread.execute(ExecuteThread.java:295)
    at weblogic.work.ExecuteThread.run(ExecuteThread.java:254)

У меня есть баночки в Maven Dependences:

maven зависимости

Путь к классу для jar log4j в weblogic:

log4j.xml

Log4j.xml (из classpath):

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="LOGFILE" class="org.apache.log4j.FileAppender">

        <param name="File"   value="C:\\Work\\KEPLER\\KH_RRM\\log/rrm-web.log" />
        <param name="Append" value="false" />
        <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c{1}] %m%n"/>
        </layout>
    </appender>

    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
           <param name="ConversionPattern" value=" %d{yyyy-MM-dd HH:mm:ss} [%t] %-5p [%c{1}] %m%n"/>
        </layout>
    </appender>

    <root>
       <priority value ="ALL" />
       <appender-ref ref="STDOUT" />
       <appender-ref ref="LOGFILE" />
    </root>

</log4j:configuration>

Что я не прав? Я не могу представить... Пожалуйста, помогите мне! Спасибо!

2 ответа

Решение

Ответ таков: я выполняю развертывание на Adminserver, но мне необходимо развернуть свое приложение в кластере, поскольку параметр ClassPath и аргументы в ServerStart не будут работать только на Adminserver, он будет работать только на других.

Как правило, потому что это вопрос, заданный maven, тогда прикрепите ваш pom.xml (или его часть). Это лучше, чем прикрепление скриншотов:)

Ваша зависимость log4j имеет область действия, это означает, что log4j уже находится на вашем сервере и НЕ ДОЛЖЕН устанавливаться вместе с приложением.

Другие вопросы по тегам