使用我的web应用程序启动Tomcat 7.0.54时,出现以下异常。当通过Eclipse运行tomcat时,同样的web应用程序启动良好。我最初是作为一个战争档案部署的,后来是作为一场爆炸战争部署的。只有在Eclipse中未运行时才会出现异常。我在多个平台上尝试过。
我认为这可能是javax.inject-libs在解析清单文件时不在tomcat类路径中的结果,所以我将javax.inject.jar文件添加到tomcat lib目录中。。。同样的交易。实际上,我在任何文件中都找不到参数值"javax-inject-ExtensionName"。
有人看到了吗,或者有什么建议吗?
谢谢。
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
问题最终出现在我从github中提取并使用maven构建的一个依赖jar上。该pom文件指定了在使用maven-jar插件构建jar时添加Extensions的选项。其中一个扩展是javax.inject…然而,maven jar插件将其转换为java_inject-Extension-Name,但在扩展列表中保留为javax.inject。。。这种脱节导致了这个问题。
当在eclipse中运行时,它不能进行同样的验证。在不使用Manifest.mf文件中的扩展名的情况下重建jar修复了此问题。