我从Windows更改为Ubuntu17.04,现在我通过EclipseNeon.3版本(4.6.3)在Tomcat 8.0.36上启动get应用程序时出错。
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下工作,设置和安装几乎相同。此外,当我使用mvn clean package (默认的Ubuntu安装而不是eclipse )并手动将它部署到默认的mvn clean package安装ubuntu时,它也能工作。我已经把我的日食版本换成了氧气,也遇到了同样的问题。我也试图更改依赖项的版本--相同的结果。
我已经将代码调试为一个"ServletContextListener“,它试图获得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);
}
}我不知道我能做些什么。和我也不完全理解这个问题。 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)发布于 2017-09-07 11:12:53
我更改为在windows中使用的Tomcat8安装。它终于奏效了(我不知道前一任负责人在那里做了什么)。
我立即看到的唯一不同是,它也在Tomcat端使用了Log4j。也许这就是区别所在。对不起,如果其他人也有这个问题,而没有解决办法。
https://stackoverflow.com/questions/46079284
复制相似问题