1

最近、Tomcat Web サービスを更新しました。実際に更新したのは、XMLBeans をバージョン 2.4 に、Saxon をバージョン 9 に更新したことだけです。

Netbeans と eclipse を実行すると、プロジェクトは正常に動作するようになりましたが、Tomcat にデプロイしようとすると、次のようになります。

JAXEN をバージョン 1.1.1 に更新しようとしましたが、うまくいきませんでした。

何か案は?

デプロイで発生するエラーは次のとおりです。

java.lang.IllegalArgumentException: dom4j-core,jdom,xml-apis,xerces,junit-Extension-Name
        at java.util.jar.Attributes$Name.(Attributes.java:440)
        at java.util.jar.Attributes.getValue(Attributes.java:99)
        at org.apache.catalina.util.ManifestResource.getRequiredExtensions(ManifestResource.java:186)
        at org.apache.catalina.util.ManifestResource.processManifest(ManifestResource.java:155)
        at org.apache.catalina.util.ManifestResource.(ManifestResource.java:52)
        at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:186)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4154)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:511)
        at org.apache.catalina.startup.HostConfig.check(HostConfig.java:1220)
        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:585)
        at org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:297)
        at com.sun.jmx.mbeanserver.DynamicMetaDataImpl.invoke(DynamicMetaDataImpl.java:213)
        at com.sun.jmx.mbeanserver.MetaDataImpl.invoke(MetaDataImpl.java:220)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:815)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:784)
        at org.apache.catalina.manager.ManagerServlet.check(ManagerServlet.java:1458)
        at org.apache.catalina.manager.ManagerServlet.deploy(ManagerServlet.java:820)
        at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:348)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:196)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:595)

4

1 に答える 1

2

Extension-Listこの問題は、MANIFEST.MF ファイルにTomcat が好まない属性の値が含まれている JAR ファイルが原因で発生しています。Tomcat は、この属性の値が拡張名のスペースで区切られたリストであることを想定していますが ( ManifestResource ソースdom4j-core,jdom,xml-apis,xerces,junitを参照)、JAR の 1 つが代わりにカンマで区切られたリストを持っているようです。このリストにはスペースがないため、Tomcat はすべてが 1 つの大きな拡張名であると認識します。

拡張名は、マニフェスト内のその他の属性の名前のプレフィックスとしても使用されます。たとえば、有効なマニフェストの一部を次に示します。

拡張リスト: ant qdox commons-attributes-api javadoc
ant-拡張名: ant
ant 実装バージョン: 1.5
ant 実装 URL: http://www.ibiblio.org/maven/ant/jars/ant-1.5。
 瓶
qdox-拡張名: qdox
qdox-実装-バージョン: 1.5

属性名には、文字、数字、ハイフン、およびアンダースコアのみを含めることができるため、拡張名も同じ規則に従う必要があります。コンマを含む拡張子名は明らかに無効であり、これが上記の例外が発生する理由です。

公式のJAR ファイル仕様を見てきましたが、これらの拡張子名をどのように区切るかについては記載されていないようです。

Extension-Listどの JARのマニフェストにこのコンマ区切りの属性があるかはわかりません。ただし、最初に XMLBeans と Saxon の最新バージョン内の JAR ファイルを確認します。アップグレード前にプロジェクトが機能していた場合、問題は最近変更されたことが原因である可能性があります。

修正はもちろん、問題のあるマニフェスト ファイルを編集して、そのExtension-List属性にコンマではなくスペースを使用することです。

幸運を!

于 2009-05-12T22:09:12.917 に答える