java Tomcat 6 启动时的警告和错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/11829348/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Warnings and Errors at Tomcat 6 startup
提问by Legrand Robert
I'm new to Tomcat, and have been tasked with migrating a Tomcat 5 / Java 1.4 application in Tomcat 6 / Java 6.
我是 Tomcat 的新手,我的任务是在 Tomcat 6/Java 6 中迁移 Tomcat 5/Java 1.4 应用程序。
On tomcat 6 startup in Eclipse I keep getting multiple warnings like :
在 Eclipse 中启动 tomcat 6 时,我不断收到多个警告,例如:
No rules found matching 'Server/GlobalNamingResources/ResourceParams/parameter/value'. 6 ao?t 2012 14:49:32 org.apache.tomcat.util.digester.Digester endElement (50 times or so...)
找不到与“Server/GlobalNamingResources/ResourceParams/parameter/value”匹配的规则。6 ao?t 2012 14:49:32 org.apache.tomcat.util.digester.Digester endElement(50 次左右......)
Then
然后
[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:MyProject' did not find a matching property. 6 ao?t 2012 14:49:32 org.apache.tomcat.util.digester.SetPropertiesRule begin
[SetPropertiesRule]{Server/Service/Engine/Host/Context} 将属性 'source' 设置为 'org.eclipse.jst.jee.server:MyProject' 没有找到匹配的属性。6 ao?t 2012 14:49:32 org.apache.tomcat.util.digester.SetPropertiesRule 开始
Then
然后
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\METIER\MES\java\jdk1.6.0_11\bin; [+ multiple different paths] 6 ao?t 2012 14:49:32 org.apache.coyote.http11.Http11Protocol init
在 java.library.path: C:\METIER\MES\java\jdk1.6.0_11\bin 上找不到基于 APR 的 Apache Tomcat Native 库,它可以在生产环境中实现最佳性能。[+ 多个不同的路径] 6 ao?t 2012 14:49:32 org.apache.coyote.http11.Http11Protocol init
Then
然后
Could not get url for /javax/servlet/jsp/resources/jsp_2_1.xsd 6 ao?t 2012 14:49:32 org.apache.catalina.startup.DigesterFactory register
无法获取 /javax/servlet/jsp/resources/jsp_2_1.xsd 6 ao?t 2012 14:49:32 org.apache.catalina.startup.DigesterFactory 注册的 url
Then, unsurprisingly, an exception on the webApp load()
然后,不出所料,webApp load() 出现异常
GRAVE: La servlet /SdcReaderService a généré une exception "load()" org.apache.commons.logging.LogConfigurationException: Class org.apache.commons.logging.impl.Log4JLogger does not implement Log at org.apache.commons.logging.impl.LogFactoryImpl.getLogConstructor(LogFactoryImpl.java:412) at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(LogFactoryImpl.java:525) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:272) at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(LogFactoryImpl.java:246) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:395) at org.apache.jasper.servlet.JspServlet.(JspServlet.java:58) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 ao?t 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/SdcReaderService,J2EEApplication=none,J2EEServer=none 6 ao?t 2012 14:49:32 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 ao?t 2012 14:49:32 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 ao?t 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/,J2EEApplication=none,J2EEServer=none 6 ao?t 2012 14:49:32 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 ao?t 2012 14:49:32 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet /PlmIterableObjectServiceReader a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 ao?t 2012 14:49:32 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/PlmIterableObjectServiceReader,J2EEApplication=none,J2EEServer=none 6 ao?t 2012 14:49:33 org.apache.catalina.core.StandardContext addApplicationListener INFO: The listener "com.rolex.j2ee.MyProject.util.MyProjectServletCtxListener" is already configured for this context. The duplicate definition has been ignored. 6 ao?t 2012 14:49:33 org.apache.catalina.core.StandardContext addApplicationListener INFO: The listener "com.rolex.j2ee.MyProject.util.SessionListener" is already configured for this context. The duplicate definition has been ignored. 6 ao?t 2012 14:49:33 org.apache.catalina.core.ApplicationContext log INFO: La servlet jsp est marqué comme indisponible 6 ao?t 2012 14:49:33 org.apache.catalina.core.StandardContext loadOnStartup GRAVE: La servlet /MyProject a généré une exception "load()" java.lang.NoClassDefFoundError: Could not initialize class org.apache.jasper.servlet.JspServlet at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1104) at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:981) at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4058) at org.apache.catalina.core.StandardContext.start(StandardContext.java:4364) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardHost.start(StandardHost.java:719) at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045) at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443) at org.apache.catalina.core.StandardService.start(StandardService.java:516) at org.apache.catalina.core.StandardServer.start(StandardServer.java:710) at org.apache.catalina.startup.Catalina.start(Catalina.java:578) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413) 6 ao?t 2012 14:49:33 org.apache.tomcat.util.modeler.Registry registerComponent GRAVE: Null component Catalina:type=JspMonitor,name=jsp,WebModule=//localhost/MyProject,J2EEApplication=none,J2EEServer=none
已经为此上下文配置了侦听器“com.rolex.j2ee.MyProject.util.MyProjectServletCtxListener”。重复定义已被忽略。6 ao?t 2012 14:49:33 org.apache.catalina.core.StandardContext addApplicationListener INFO:已经为此上下文配置了侦听器“com.rolex.j2ee.MyProject.util.SessionListener”。重复定义已被忽略。6 ao?t 2012 14:49:33 org.apache.catalina.core.ApplicationContext 日志信息:La servlet jsp est marqué comme indisponible 6 ao?t 2012 14:49:33 org.apache.catalina.core.StandardContext loadOnStartup GRAVE : La servlet /MyProject a généré une 异常 "load()" java.lang.NoClassDefFoundError: 无法在 sun.reflect.NativeConstructorAccessorImpl 初始化类 org.apache.jasper.servlet.JspServlet。
I guess the problem comes from the configuration files of Tomcat, but I don't understand exactly what is the cause of each of the warnings/errors above. For instance, in the server.xml file, the global naming ressources seems correctly defined, so should I look for a missing resource Parameter block, or for some kind of syntax error in the file, or a missing .jar, or ... ?
我猜问题出在Tomcat的配置文件上,但我不明白上面每个警告/错误的确切原因是什么。例如,在 server.xml 文件中,全局命名资源似乎是正确定义的,所以我应该查找丢失的资源参数块,还是文件中的某种语法错误,或者丢失的 .jar,或者... ?
Any suggestion welcome !
欢迎任何建议!
回答by Christopher Schultz
The basic problem here is that you can't simply take a Tomcat 5.5 server.xml
file, drop it into Tomcat 6, and expect it to work without any changes. You need to read the Migration Guideamong other things. The best strategy is to start with the server.xml
that ships with Tomcat and make whatever modifications you need to configure it as you had the previous version configured. That usually means <Connector>
and <Resource>
definitions. Note that you should not be defining <Context>
elements in server.xml
any longer.
这里的基本问题是,您不能简单地将 Tomcat 5.5server.xml
文件放入 Tomcat 6 中,然后期望它在没有任何更改的情况下工作。您需要阅读迁移指南以及其他内容。最好的策略是从server.xml
Tomcat 附带的 Tomcat开始,然后像配置以前的版本一样进行配置它所需的任何修改。这通常意味着<Connector>
和<Resource>
定义。请注意,你不应该定义<Context>
中的元素server.xml
不再。
One more note: if you are upgrading to a different major version of Tomcat, why not go all the way up to Tomcat 7.0?
还有一点要注意:如果您要升级到 Tomcat 的不同主要版本,为什么不一直升级到 Tomcat 7.0?
No rules found matching 'Server/GlobalNamingResources/ResourceParams/parameter/value
找不到与“服务器/GlobalNamingResources/ResourceParams/parameter/value”匹配的规则
<Resource>
elements no longer take sub-elements called <parameter>
, etc. Instead, convert all your parameters to attributes of the <Resource>
element.
<Resource>
元素不再采用称为<parameter>
等的子元素。相反,将所有参数转换为<Resource>
元素的属性。
[SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' ...
[SetPropertiesRule]{Server/Service/Engine/Host/Context} 设置属性 'source' ...
<Context>
does not support the "source" attribute: Eclipse is adding this and it shouldn't be there. Note that this is only a warning: Tomcat (and your webapp) will start up just fine in spite of this message.
<Context>
不支持“源”属性:Eclipse 正在添加它,它不应该在那里。请注意,这只是一个警告:尽管有此消息,Tomcat(和您的 web 应用程序)仍将正常启动。
The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found ...
没有找到基于 APR 的 Apache Tomcat Native 库,它可以在生产环境中实现最佳性能......
You haven't compiled Tomcat's native library, but you have configured the AprLifecycleListener
, which attempts to load this library. If you want to use APR, go get it and compile it. If you don't want it or need it, disable the AprLifecycleListener
(or just ignore the warning message, which doesn't hurt anything). Using APR is a very good idea if you are using Tomcat for SSL termination because APR is much higher performance for SSL than Java's JSSE, plus APR supports FIPS mode if you need that sort of thing. The APR connector scales much better than the BIO connector, too, even if you aren't using SSL.
您还没有编译 Tomcat 的本机库,但是您已经配置了AprLifecycleListener
,它会尝试加载这个库。如果你想使用APR,去获取并编译它。如果您不想要或不需要它,请禁用AprLifecycleListener
(或只是忽略警告消息,这不会造成任何伤害)。如果您将 Tomcat 用于 SSL 终止,则使用 APR 是一个非常好的主意,因为 APR 的 SSL 性能比 Java 的 JSSE 高得多,而且如果您需要那种东西,APR 还支持 FIPS 模式。即使您不使用 SSL,APR 连接器的扩展性也比 BIO 连接器好得多。
Could not get url for /javax/servlet/jsp/resources/jsp_2_1.xsd ...
无法获取 /javax/servlet/jsp/resources/jsp_2_1.xsd 的 url ...
I'm not sure I can help you with that one. Without the full stack trace or other information (like what file mentions that URL), we can't help.
我不确定我能帮您解决这个问题。如果没有完整的堆栈跟踪或其他信息(例如哪个文件提到了该 URL),我们将无能为力。