Hello,
when I try to start Tomcat 7.0.42 with OpenJDK 6 b27, it complains about
not finding classes for the logging handlers. I created a minimal
logging.properties to narrow down the problem:
handlers = 1catalina.org.apache.juli.FileHandler,
java.util.logging.ConsoleHandler
.handlers = java.util.logging.ConsoleHandler
1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = catalinatest.
java.util.logging.ConsoleHandler.level = FINE
java.util.logging.ConsoleHandler.formatter =
java.util.logging.SimpleFormatter
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers =
1catalina.org.apache.juli.FileHandler
The output of "./catalina.sh run" is the following:
INFO: Starting Servlet Engine: Apache Tomcat/7.0.42
Can't load log handler "1catalina.org.apache.juli.FileHandler"
java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler
java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler
at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
at java.util.logging.LogManager$3.run(LogManager.java:654)
at java.security.AccessController.doPrivileged(Native Method)
at
java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:641)
at java.util.logging.LogManager.access$900(LogManager.java:150)
at
java.util.logging.LogManager$LoggerContext.addLogger(LogManager.java:437)
at
java.util.logging.LogManager$UserLoggerContext.demandLogger(LogManager.java:596)
at
java.util.logging.LogManager$LoggerContext.demandLogger(LogManager.java:475)
at java.util.logging.Logger.getLogger(Logger.java:329)
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:170)
at org.apache.juli.logging.LogFactory.getLog(LogFactory.java:311)
at
org.apache.catalina.core.ContainerBase.getLogger(ContainerBase.java:452)
at
org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1102)
at
org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800)
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$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:679)
There can be found many mentions on this topic on the web, each of them
proposing one of those solutions which I tried:
* Check/set JAVA_HOME / JRE_HOME
$ export JAVA_HOME=/usr/local/openjdk6/
$ export JRE_HOME=/usr/local/openjdk6/jre/
* Check/set CATALINA_HOME
$ export
CATALINA_HOME=/home/mpeterma/System/Apps/apache-tomcat-7.0.42
* Ensure LOGGING_CONFIG and LOGGING_MANAGER are set properly
--> validated, LOGGING_MANAGER is set to
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager in
catalina.sh if unspecified, which should be correct; LOGGING_CONFIG is
found because it contains the handlers where Tomcat complains about
* Ensure tomcat-juli.jar is in the classpath
--> validated, it's using
/home/mpeterma/System/Apps/apache-tomcat-7.0.42/bin/bootstrap.jar:/home/mpeterma/System/Apps/apache-tomcat-7.0.42/bin/tomcat-juli.jar
* Place tomcat-juli.jar into Tomcat lib folder --> tested, unsuccessful
* Place tomcat-juli.jar into OpenJDK / JRE lib folder(s) --> tested,
unsuccessful
None of this proposals fixed the problem for me. When I comment out the
org.apache.catalina.core.ContainerBase.[Catalina].[localhost].* -lines
from logging.properties, the problem disappears. Anyway - this is not a
solution as the logging is not working then.
The only workaround which *is* working is to use OpenJDK 7 instead of
OpenJDK 6. But I would like to make it run on OpenJDK 6.
$ java -version
openjdk version "1.6.0_32"
OpenJDK Runtime Environment (build 1.6.0_32-b27)
OpenJDK 64-Bit Server VM (build 20.0-b12, mixed mode)
Is there a known problem with this JDK or with OpenJDK in general? It
might be noteworty that I have this problem on FreeBSD only. The Linux
version of OpenJDK 6 b27 (reports as IcedTea6 / OpenJDK 6 b27) works.
There was a bug report filed against the FreeBSD OpenJDK 6 port already:
http://www.freebsd.org/cgi/query-pr.cgi?pr=177067&cat=
At this time it is not clear to me where to look for the root cause. I
appreciate your help and hints, looking for directions where to
investigate in detail.
Kind regards,
Matthias