2017-09-06 2 views
0

Je suis passé de Windows à Ubuntu 17.04 et maintenant je reçois une erreur lorsque je lance la webapp sur un Tomcat 8.0.36 via Eclipse Neon.3 Release (4.6.3).Logback ClassCircularityError

java.lang.ClassCircularityError: ch/qos/logback/core/spi/FilterReply 

Le projet est construit via M2E à AspectJ.

utilisations suivantes Dépendances SLF4J:

<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> 

Il fonctionne sous Windows de Eclipse avec des paramètres presque identiques et installation. Il fonctionne également quand je mvn clean package (l'installation d'Ubuntu maven par défaut n'éclipse pas un) et déployé manuellement à l'installation de Tomcat par défaut d'Ubuntu. J'ai déjà changé ma version d'éclipse en Oxygen et j'ai eu le même problème. J'ai aussi essayé de changer les versions des dépendances - même résultat.

J'ai debuged le code à un « ServletContextListener » qui tente d'obtenir un objet JDNI:

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); 
    } 
} 

Je n'ai aucune idée ce que je pourrais essayer de le réparer. Et aussi je ne comprends pas complètement le problème. Tomcat essaie de charger une classe qui se réfère à elle-même ?!

Est-ce que quelqu'un a une idée de ce que je pourrais vérifier?

Pile complète de départ Tomcat.

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) 
+1

ClassCircularityError: levée lorsque la machine virtuelle Java détecte une circularité dans la hiérarchie de superclasse d'une classe en cours de chargement. – Kayaman

+0

Le problème se reproduit-il si vous désactivez JRebel? –

+0

Nope ne fonctionne pas eigther :( – Kani

Répondre

0

Je suis passé à l'installation Tomcat8 utilisée dans Windows. Et ça a finalement marché (je ne savais pas ce que le précédent chef faisait là).

La seule différence que je peux voir instantanément est qu'il a utilisé Log4j également sur le côté Tomcat. Peut-être que c'est la différence. Désolé si quelqu'un d'autre a aussi ce problème et aucune solution.