最近在生产环境部署Tomcat的时候,在启动的时候,在控制台报“java.lang.ClassNotFoundException: 1catalina.org.apache.juli.FileHandler”这样子类似的错误。
原因
这个极有可能是因为你修改了catalina.sh
文件(比如,你想修改下JVM的参数等)。
这个错误,会导致在Tomcat的logs
目录下的localhost.yyyy-MM-dd
这类的日志文件不会进行记录的了。
解决办法
正确的处理方式为: 在Tomcat的安装目录下的bin
目录下,修改daemon.sh的文件,然后写入你想要修改的参数,比如我的如下:
#!/bin/sh CATALINA_OPTS="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"
CLASSPATH= JAVA_OPTS= CATALINA_OPTS="-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager"
说明:
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
:这个参数就是解决上面报的问题的 -Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n
: 这个参数是使用远程调试的
还有一点要特别注意的是:它是使用CATALINA_OPTS
参数,而不是JAVA_OPTS
。不知道为什么,我在JAVA_OPTS
里修改,一直没有生效。*_*
这个问题困惑了我好久,今天终于认真看看Tomcat官方文档,才得以解决。
更新
2016-7-5
经过学习,CATALINA_OPTS
参数是针对Tomcat本身的, 而JAVA_OPTS
则是控制我们的应用的.所以JAVA_OPTS
里修改这参数,并没有传递到CATALINA_OPTS
里.
转自:https://emacsist.github.io/2015/08/28/Tomcat%E6%8A%A5java.lang.ClassNotFoundException-1catalina.org.apache.juli.FileHandler/