使用Web应用程序启动Tomcat 7.0.54时,出现以下异常。通过Eclipse运行tomcat时,该Web应用程序可以正常启动。我最初是作为战争档案部署的,然后是爆炸战争。仅当不在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
最佳答案
问题最终出在我从github上摘下来的,用maven构建的依赖罐中。当使用maven jar插件构建jar时,该pom文件指定了addExtensions选项。扩展名之一是javax.inject ...但是,maven jar插件将其转换为java_inject-Extension-Name,但在扩展名列表中将其保留为javax.inject ...导致问题的原因是断开连接。
在eclipse中运行时,一定不能进行相同的验证。重建不包含Manifest.mf文件扩展名的jar可以解决此问题。