Error when starting Confluence: Handler error: java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler
Asked by Debajit Adhikary:

I see the following error when trying to run start-confluence.sh:

```
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52
Handler error
java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler
```

How can I diagnose what is going wrong here?

The Confluence website lists this in their troubleshooting guide, but the given answer does not help. I have verified that the jars are not corrupted. I redeployed with another download, but the error still does not go away. How can I fix this? Any pointers would be of great help. (I've been stuck with this problem for two days now)

----------------------------

Larger stacktrace:

```
Feb 19, 2015 2:14:22 AM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.52
Handler error
java.lang.ClassNotFoundException: org.slf4j.bridge.SLF4JBridgeHandler
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1718)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1569)
 at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:558)
 at org.apache.juli.ClassLoaderLogManager.readConfiguration(ClassLoaderLogManager.java:501)
 at org.apache.juli.ClassLoaderLogManager$2.run(ClassLoaderLogManager.java:400)
 at org.apache.juli.ClassLoaderLogManager$2.run(ClassLoaderLogManager.java:396)
 at java.security.AccessController.doPrivileged(Native Method)
 at org.apache.juli.ClassLoaderLogManager.getClassLoaderInfo(ClassLoaderLogManager.java:396)
 at org.apache.juli.ClassLoaderLogManager.getLogger(ClassLoaderLogManager.java:231)
 at java.util.logging.LogManager.demandLogger(LogManager.java:430)
 at java.util.logging.Logger.demandLogger(Logger.java:346)
 at java.util.logging.Logger.getLogger(Logger.java:393)
 at org.apache.juli.logging.DirectJDKLog.<init>(DirectJDKLog.java:71)
 at org.apache.juli.logging.DirectJDKLog.getInstance(DirectJDKLog.java:196)
 at org.apache.juli.logging.LogFactory.getInstance(LogFactory.java:169)
 at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:310)
 at org.apache.catalina.core.ContainerBase.getLogger(ContainerBase.java:452)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5344)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:745)
Feb 19, 2015 2:14:23 AM org.apache.catalina.startup.ContextConfig processAnnotationsJar
SEVERE: contextConfig.jarFile
java.io.FileNotFoundException: /apollo/env/WikiConfluence/var/confluence/atlassian-confluence-5.7/webapps/../confluence/WEB-INF/lib/atlassian-extras-core-3.2.jar (No such file or directory)
 at java.util.zip.ZipFile.open(Native Method)
 at java.util.zip.ZipFile.<init>(ZipFile.java:215)
 at java.util.zip.ZipFile.<init>(ZipFile.java:145)
 at java.util.jar.JarFile.<init>(JarFile.java:154)
 at java.util.jar.JarFile.<init>(JarFile.java:91)
 at sun.net.www.protocol.jar.URLJarFile.<init>(URLJarFile.java:93)
 at sun.net.www.protocol.jar.URLJarFile.getJarFile(URLJarFile.java:69)
 at sun.net.www.protocol.jar.JarFileFactory.get(JarFileFactory.java:99)
 at sun.net.www.protocol.jar.JarURLConnection.connect(JarURLConnection.java:122)
 at sun.net.www.protocol.jar.JarURLConnection.getJarFile(JarURLConnection.java:89)
 at org.apache.tomcat.util.scan.FileUrlJar.<init>(FileUrlJar.java:41)
 at org.apache.tomcat.util.scan.JarFactory.newInstance(JarFactory.java:34)
 at org.apache.catalina.startup.ContextConfig.processAnnotationsJar(ContextConfig.java:1922)
 at org.apache.catalina.startup.ContextConfig.processAnnotationsUrl(ContextConfig.java:1897)
 at org.apache.catalina.startup.ContextConfig.processAnnotations(ContextConfig.java:1882)
 at org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1314)
 at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:873)
 at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:371)
 at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
 at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
 at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)
 at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
 at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
```


Answers:
author: Debajit Adhikary
body: Fixed the problem.

Some of the scripts use pwd to assess what the current directory is. Ensured that I was cd'ed into the bin/ directory before invoking start-confluence.sh from another script.

Also made sure that the logs/ directory and other directories which are empty have dummy files (.gitkeep) in them so that when they are deployed by a script, they get deployed correctly (Confluence looks for these directories at runtime)


Tags: confluence-administration