2017-09-06 1 views
0

私はWindowsからUbuntu 17.04に変更しましたが、Eclipse Neon.3リリース(4.6.3)経由でTomcat 8.0.36上でwebappを起動するとエラーが発生します。Logback ClassCircularityError

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

プロジェクトは、M2EにはAspectJが組み込まれています。 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> 

それはほとんど同じ設定およびインストールしてWindowsのEclipseの下での仕事。 また、私はmvn clean package(デフォルトのubuntu mavenインストールではeclipse 1ではない)が動作し、それを手動でUbuntuのデフォルトのTomcatインストールにデプロイすると動作します。 私はすでに私のEclipse版をOxygenに変更して、同じ問題を抱えています。 依存関係のバージョンも同じように変更しようとしました。私はそれを修正しようとすることができるもの見当もつかない

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

私はJDNIオブジェクトを取得しようとする「のServletContextListener」にコードをdebugedています。 また、私は問題を完全に理解していません。 Tomcatは、それを参照するクラスを読み込もうとしますか?

私は確認できるものがありますか?

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:Java仮想マシンがロードされるクラスのスーパークラス階層で循環性を検出した場合にスローされます。 – Kayaman

+0

JRebelをオフにすると問題が再現されますか? –

+0

Nopeは動作しません。 – Kani

答えて

0

私はWindowsで使用したTomcat8のインストールに変更しました。 それは最終的に働いた(私は以前のヘッドがそこに行ったか分からなかった)。

瞬時に見ることのできる唯一の違いは、Tomcat側でもLog4jを使用していたことです。多分それは違いです。申し訳ありませんが、他の誰かがこの問題と解決策を持っていない場合。

関連する問題