【发布时间】:2020-03-27 11:18:43
【问题描述】:
我有一个使用 logback 和 slf4j 的 osgi 6.0.0 项目。
目前我正在实现一个依赖于使用的外部 jar 的包 org.apache.logging.log4j
在命令行执行期间,我的 karaf 控制台通过显示此错误而冻结:
线程“Karaf 本地控制台用户 karaf”java.lang.NoClassDefFoundError 中的异常:org/apache/logging/log4j/util/ReflectionUtil 在 org.apache.logging.log4j.core.impl.ThrowableProxy.(ThrowableProxy.java:145) 在 org.apache.logging.log4j.core.impl.ThrowableProxy.(ThrowableProxy.java:125) 在 org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:338) 在 org.ops4j.pax.logging.log4j2.internal.PaxLoggingEventImpl.getThrowableStrRep(PaxLoggingEventImpl.java:76) 在 org.apache.karaf.log.core.internal.KarafLogEvent.(KarafLogEvent.java:45) 在 org.apache.karaf.log.core.internal.LogServiceImpl.doAppend(LogServiceImpl.java:177) 在 org.ops4j.pax.logging.log4j2.internal.PaxAppenderProxy.doAppend(PaxAppenderProxy.java:65) 在 org.ops4j.pax.logging.log4j2.appender.PaxOsgiAppender.append(PaxOsgiAppender.java:82) 在 org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156) 在 org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129) 在 org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120) 在 org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84) 在 org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:448) 在 org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:433) 在 org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:417) 在 org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:403) 在 org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:63) 在 org.apache.logging.log4j.core.Logger.logMessage(Logger.java:146) 在 org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog0(PaxLoggerImpl.java:151) 在 org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.doLog(PaxLoggerImpl.java:144) 在 org.ops4j.pax.logging.log4j2.internal.PaxLoggerImpl.error(PaxLoggerImpl.java:192) 在 org.ops4j.pax.logging.internal.TrackingLogger.error(TrackingLogger.java:96) 在 org.ops4j.pax.logging.slf4j.Slf4jLogger.error(Slf4jLogger.java:953) 在 org.apache.karaf.shell.support.ShellUtil.logException(ShellUtil.java:152) 在 org.apache.karaf.shell.impl.console.ConsoleSessionImpl.doExecute(ConsoleSessionImpl.java:474) 在 org.apache.karaf.shell.impl.console.ConsoleSessionImpl.run(ConsoleSessionImpl.java:407) 在 java.lang.Thread.run(Thread.java:748) 原因:java.lang.ClassNotFoundException:org.apache.logging.log4j.api 找不到 org.apache.logging.log4j.util.ReflectionUtil [112] 在 org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1639) 在 org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) 在 org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.apache.felix.framework.BundleWiringImpl.getClassByDelegation(BundleWiringImpl.java:1414) 在 org.apache.felix.framework.BundleWiringImpl.searchImports(BundleWiringImpl.java:1660) 在 org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1590) 在 org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80) 在 org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 27 更多
【问题讨论】:
-
任何细节?配置?日志?版本?重现步骤?
标签: log4j bundle logback apache-karaf