首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Logback ClassCircularityError

Logback ClassCircularityError
EN

Stack Overflow用户
提问于 2017-09-06 15:36:45
回答 1查看 649关注 0票数 0

我从Windows更改为Ubuntu17.04,现在我通过EclipseNeon.3版本(4.6.3)在Tomcat 8.0.36上启动get应用程序时出错。

代码语言:javascript
复制
java.lang.ClassCircularityError: ch/qos/logback/core/spi/FilterReply

该项目是通过M2E构建的,其中包含了AspectJ。

使用以下SLF4J依赖项:

代码语言:javascript
复制
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.1.7</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jul-to-slf4j</artifactId>
        <version>1.7.21</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
        <version>1.7.21</version>
    </dependency>

它在Windows下工作,设置和安装几乎相同。此外,当我使用mvn clean package (默认的Ubuntu安装而不是eclipse )并手动将它部署到默认的mvn clean package安装ubuntu时,它也能工作。我已经把我的日食版本换成了氧气,也遇到了同样的问题。我也试图更改依赖项的版本--相同的结果。

我已经将代码调试为一个"ServletContextListener“,它试图获得JDNI对象:

代码语言:javascript
复制
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.LogRecord;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.slf4j.LoggerFactory;
import org.slf4j.bridge.SLF4JBridgeHandler;
import ch.qos.logback.classic.LoggerContext;
import ch.qos.logback.classic.joran.JoranConfigurator;
import ch.qos.logback.classic.jul.LevelChangePropagator;
import ch.qos.logback.core.util.StatusPrinter;

// ....

@Override
public void contextInitialized(final ServletContextEvent sce) {
    new LogRecord(Level.FINEST, "Ensure class is loaded!");

    // Prepare logging context
    final LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
    context.reset();

    // setup JUL to SLF4J log bridging
    SLF4JBridgeHandler.removeHandlersForRootLogger();
    SLF4JBridgeHandler.install();
    final LevelChangePropagator levelChangePropagator = new LevelChangePropagator();
    levelChangePropagator.setResetJUL(true);
    levelChangePropagator.setContext(context);
    levelChangePropagator.start();
    context.addListener(levelChangePropagator);

    // Load context values
    String contextPath = sce.getServletContext().getContextPath().replaceAll("[^0-9a-zA-Z-_]", "");
    if(contextPath.length() == 0){
        contextPath = "ROOT";
    }
    context.putProperty("appName", contextPath);
    final Boolean isProductiveVal = (Boolean) getJNDI(IS_PRODUCTIVE_JNDI);

// .....

private static Object getJNDI(final String jndiPath) {
    try {
        final Context initialContext = new InitialContext(); // << This line crashes
        return initialContext.lookup(jndiPath);
    } catch (Exception e) {
        throw new RuntimeException(e);
    }
}

我不知道我能做些什么。和我也不完全理解这个问题。 Tomcat试图加载一个引用它的类?!

有人知道我能查些什么吗?

全面的Tomcat启动。

代码语言:javascript
复制
Sep 06, 2017 5:05:36 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNUNG: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyProject' did not find a matching property.
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server version:        Apache Tomcat/8.0.36
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server built:          Jun 9 2016 13:55:50 UTC
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Server number:         8.0.36.0
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: OS Name:               Linux
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: OS Version:            4.10.0-33-generic
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Architecture:          amd64
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Java Home:             /usr/lib/jvm/java-8-openjdk-amd64/jre
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: JVM Version:           1.8.0_131-8u131-b11-2ubuntu1.17.04.3-b11
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: JVM Vendor:            Oracle Corporation
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: CATALINA_BASE:         /home/kani/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: CATALINA_HOME:         /opt/tomcat8
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:37177
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.base=/home/kani/.jrebel
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.env.ide.plugin.version=7.0.14
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.env.ide.version=4.6.3
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.env.ide.product=Eclipse
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.env.ide=eclipse
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.notification.url=http://localhost:17434
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.workspace.path=/home/kani/eclipse-workspace
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Drebel.properties=/home/kani/.jrebel/jrebel.properties
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -agentpath:/opt/eclipse/plugins/org.zeroturnaround.eclipse.embedder_7.0.14.RELEASE/jrebel/lib/libjrebel64.so
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dcatalina.base=/home/kani/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dcatalina.home=/opt/tomcat8
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dwtp.deploy=/home/kani/eclipse-workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Djava.endorsed.dirs=/opt/tomcat8/endorsed
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.VersionLoggerListener log
INFORMATION: Command line argument: -Dfile.encoding=UTF-8
Sep 06, 2017 5:05:36 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFORMATION: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: /usr/java/packages/lib/amd64:/usr/lib/x86_64-linux-gnu/jni:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu:/usr/lib/jni:/lib:/usr/lib
Sep 06, 2017 5:05:36 PM org.apache.coyote.AbstractProtocol init
INFORMATION: Initializing ProtocolHandler ["http-nio-8080"]
Sep 06, 2017 5:05:36 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMATION: Using a shared selector for servlet write/read
Sep 06, 2017 5:05:36 PM org.apache.coyote.AbstractProtocol init
INFORMATION: Initializing ProtocolHandler ["ajp-nio-8009"]
Sep 06, 2017 5:05:36 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFORMATION: Using a shared selector for servlet write/read
Sep 06, 2017 5:05:36 PM org.apache.catalina.startup.Catalina load
INFORMATION: Initialization processed in 802 ms
Sep 06, 2017 5:05:36 PM org.apache.catalina.core.StandardService startInternal
INFORMATION: Starting service Catalina
Sep 06, 2017 5:05:36 PM org.apache.catalina.core.StandardEngine startInternal
INFORMATION: Starting Servlet Engine: Apache Tomcat/8.0.36
2017-09-06 17:05:37 JRebel: Directory '/home/kani/eclipse-workspace/MyProject/target/classes' will be monitored for changes.
2017-09-06 17:05:37 JRebel: Directory '/home/kani/eclipse-workspace/MyProject/target/m2e-wtp/web-resources' will be monitored for changes.
2017-09-06 17:05:37 JRebel: Directory '/home/kani/eclipse-workspace/MyProject/src/main/webapp' will be monitored for changes.
Sep 06, 2017 5:05:41 PM org.apache.jasper.servlet.TldScanner scanJars
INFORMATION: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Sep 06, 2017 5:05:41 PM org.apache.catalina.core.ApplicationContext log
INFORMATION: No Spring WebApplicationInitializer types detected on classpath
java.lang.ClassCircularityError: ch/qos/logback/core/spi/FilterReply
    at ch.qos.logback.classic.LoggerContext.getTurboFilterChainDecision_0_3OrMore(LoggerContext.java:267)
    at ch.qos.logback.classic.Logger.filterAndLog_0_Or3Plus(Logger.java:373)
    at ch.qos.logback.classic.Logger.log(Logger.java:765)
    at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:221)
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:303)
    at java.util.logging.Logger.log(Logger.java:738)
    at java.util.logging.Logger.doLog(Logger.java:765)
    at java.util.logging.Logger.logp(Logger.java:931)
    at org.apache.juli.logging.DirectJDKLog.log(DirectJDKLog.java:180)
    at org.apache.juli.logging.DirectJDKLog.debug(DirectJDKLog.java:103)
    at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:361)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:152)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:629)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.__invoke(DelegatingMethodAccessorImpl.java:43)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
EN

回答 1

Stack Overflow用户

发布于 2017-09-07 11:12:53

我更改为在windows中使用的Tomcat8安装。它终于奏效了(我不知道前一任负责人在那里做了什么)。

我立即看到的唯一不同是,它也在Tomcat端使用了Log4j。也许这就是区别所在。对不起,如果其他人也有这个问题,而没有解决办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46079284

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档