1. 程式人生 > >NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor()Ljavax/servlet/desc排錯

NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor()Ljavax/servlet/desc排錯

在測試 org.apache.activemq.config.BrokerXmlConfigStartTest testStartBrokerUsingXmlConfig時,出現

Running org.apache.activemq.config.BrokerXmlConfigStartTest Tests run: 15, Failures: 0, Errors: 4, Skipped: 0, Time elapsed: 42.445 sec <<< FAILURE! - in org.apache.activemq.config.BrokerXmlConfigStartTest testStartBrokerUsingXmlConfig1[activemq.xml](org.apache.activemq.config.BrokerXmlConfigStartTest)  Time elapsed: 3.743 sec  <<< ERROR! org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'invokeStart' defined in file [I:\test\vdata-activemq\assembly\src\release\conf\jetty.xml]: Invocation of init method failed; nested exception is java.lang.NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor()Ljavax/servlet/descriptor/JspConfigDescriptor;     at org.apache.jasper.servlet.TldScanner.scanJspConfig(TldScanner.java:158)     at org.apache.jasper.servlet.TldScanner.scan(TldScanner.java:104)     at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:103)     at org.eclipse.jetty.plus.annotation.ContainerInitializer.callStartup(ContainerInitializer.java:140)     at org.eclipse.jetty.annotations.ServletContainerInitializersStarter.doStart(ServletContainerInitializersStarter.java:65)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:274)     at org.eclipse.jetty.webapp.WebAppContext.startWebapp(WebAppContext.java:1349)     at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1342)     at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:741)     at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:505)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)     at org.eclipse.jetty.security.SecurityHandler.doStart(SecurityHandler.java:391)     at org.eclipse.jetty.security.ConstraintSecurityHandler.doStart(ConstraintSecurityHandler.java:449)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:132)     at org.eclipse.jetty.server.Server.start(Server.java:387)     at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114)     at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:61)     at org.eclipse.jetty.server.Server.doStart(Server.java:354)     at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.springframework.util.MethodInvoker.invoke(MethodInvoker.java:269)     at org.springframework.beans.factory.config.MethodInvokingBean.invokeWithTargetException(MethodInvokingBean.java:119)     at org.springframework.beans.factory.config.MethodInvokingFactoryBean.afterPropertiesSet(MethodInvokingFactoryBean.java:106)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)     at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)     at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)     at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)     at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)     at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)     at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742)     at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867)     at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543)     at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:64)     at org.apache.xbean.spring.context.ResourceXmlApplicationContext.<init>(ResourceXmlApplicationContext.java:52)     at org.apache.activemq.xbean.XBeanBrokerFactory$1.<init>(XBeanBrokerFactory.java:104)     at org.apache.activemq.xbean.XBeanBrokerFactory.createApplicationContext(XBeanBrokerFactory.java:104)     at org.apache.activemq.xbean.XBeanBrokerFactory.createBroker(XBeanBrokerFactory.java:67)     at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:71)     at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:54)     at org.apache.activemq.broker.BrokerFactory.createBroker(BrokerFactory.java:85)     at org.apache.activemq.config.BrokerXmlConfigStartTest.testStartBrokerUsingXmlConfig1(BrokerXmlConfigStartTest.java:95)

錯誤,由先前經驗知道,是重複引入serlet-api.jar所致,經檢視effictive pom沒有找到相關操作,搜尋工程路徑,確實存在該包,

然後利用pom dependencies檢視依賴關係

知道是commos-loggings:commons-logging:1.1引入。

檢視activemq-parent.pom,存在

  <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>${commons-logging-version}</version>
        <exclusions>
            <exclusion>
                <groupId>avalon-framework</groupId>
                <artifactId>avalon-framework</artifactId>
            </exclusion>
            <exclusion>
                <groupId>logkit</groupId>
                <artifactId>logkit</artifactId>
            </exclusion>
            <exclusion>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.servlet</groupId>
                <artifactId>servlet-api</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

  將該段程式碼拷貝至工程內,問題解決