使用我的网络应用程序启动Tomcat 7.0.54时,我收到以下异常。通过Eclipse运行tomcat时,同样的webapp可以正常启动。我最初部署为战争文件,然后作为爆炸战争。仅在未在Eclipse中运行时才会出现异常。我在多个平台上试过它。
我认为这可能是因为javax.inject libs在解析清单文件时不在tomcat类路径中,所以我将javax.inject.jar文件添加到tomcat lib目录中...应对。我实际上在任何文件中都找不到参数值“javax-inject-Extension-Name”。
有没有人看过这个,或者有什么建议?
感谢。
SEVERE: ContainerBase.addChild: start:
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/rdf.service]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:632)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
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)
Caused by: java.lang.IllegalArgumentException: javax.inject-Extension-Name
at java.util.jar.Attributes$Name.<init>(Attributes.java:464)
at java.util.jar.Attributes.getValue(Attributes.java:116)
at org.apache.catalina.util.ManifestResource.getRequiredExtensions(ManifestResource.java:185)
at org.apache.catalina.util.ManifestResource.processManifest(ManifestResource.java:154)
at org.apache.catalina.util.ManifestResource.<init>(ManifestResource.java:50)
at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:196)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5289)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 10 more
答案 0 :(得分:0)
问题最终出现在我从github上取下的依赖jar,并且是用maven构建的。当使用maven jar插件构建jar时,该pom文件指定了addExtensions选项。其中一个扩展是javax.inject ...但是,maven jar插件将其转换为java_inject-Extension-Name,但在Extensions-List中将其保留为javax.inject ...这种断开连接是导致问题的原因。 / p>
在eclipse中运行时,一定不能进行同样的验证。在没有Manifest.mf文件扩展名的情况下重建jar修复了这个问题。