GVKun编程网logo

在运行Spring MVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet

9

针对在运行SpringMVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet这个问题,本篇文章进

针对在运行Spring MVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet这个问题,本篇文章进行了详细的解答,同时本文还将给你拓展Eclipse启动SpringBoot报Caused by: java.lang.NoSuchMethodError: javax.servlet.http、groovy servlet java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I、http-500:Servlet.init() for servlet SpringDispatcherServlet threw exception、idea 启动 springboot 项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader () L...等相关知识,希望可以帮助到你。

本文目录一览:

在运行Spring MVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet

在运行Spring MVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet

当我尝试使用Spring Boot运行Spring MVC应用程序时,我遇到了异常…

ContainerBase: A child container failed during startjava.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]    at java.util.concurrent.FutureTask.report(FutureTask.java:122)    at java.util.concurrent.FutureTask.get(FutureTask.java:188)    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123)    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:799)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)    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: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].StandardContext[]]    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)    ... 6 moreCaused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.addServlet(Ljava/lang/String;Ljavax/servlet/Servlet;)Ljavax/servlet/ServletRegistration$Dynamic;    at org.springframework.boot.context.embedded.ServletRegistrationBean.onStartup(ServletRegistrationBean.java:166)    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext$1.onStartup(EmbeddedWebApplicationContext.java:214)    at org.springframework.boot.context.embedded.tomcat.ServletContextInitializerLifecycleListener.lifecycleEvent(ServletContextInitializerLifecycleListener.java:54)    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)    at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5355)    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)    ... 6 more

答案1

小编典典

如果要查找从何处加载类,请尝试

java -verbose:class -jar foo.jar | grep javax.servlet.ServletContext

foo.jarGradle或Maven生产的脂肪JAR 在哪里?例如,ServletContext可以从servlet-apiJDK扩展目录中的较旧JAR而不是您的Maven或Gradle依赖项中读取类。

命令的输出看起来像这样…

$ java -verbose:class -jar build/libs/foo-0.2.3.jar | grep javax.servlet.ServletContext[Loaded javax.servlet.ServletContext from jar:file:.../build/libs/foo-0.2.3.jar!/lib/javax.servlet-api-3.1.0.jar!/][Loaded javax.servlet.ServletContextListener from jar:file:.../build/libs/foo-0.2.3.jar!/lib/javax.servlet-api-3.1.0.jar!/][Loaded javax.servlet.ServletContextAttributeListener from jar:file:.../build/libs/foo-0.2.3.jar!/lib/javax.servlet-api-3.1.0.jar!/]

Eclipse启动SpringBoot报Caused by: java.lang.NoSuchMethodError: javax.servlet.http

Eclipse启动SpringBoot报Caused by: java.lang.NoSuchMethodError: javax.servlet.http

SpringBoot启动异常Caused by: java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest。。。

原因:

造成这种启动异常的原因一般是由于本地的Tomcat版本与SpringBoot不一致。

解决方法:

把Tomcat的lib下的servlet-api.jar移出去了。。。

groovy servlet java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I

groovy servlet java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I
at org.eclipse.jetty.server.handler.ErrorHandler.handle(ErrorHandler.java:111)
at org.eclipse.jetty.server.Response.sendError(Response.java:597)
at javax.servlet.http.HttpServlet.doGet(HttpServlet.java:187)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:769)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1125)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1059)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
at org.eclipse.jetty.server.Server.handle(Server.java:497)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311)
at org.eclipse.jetty.server.httpconnection.onFillable(httpconnection.java:248)
at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:610)
at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:539)

at java.lang.Thread.run(Thread.java:745)


问题原因: groovy libraries 中有个servlet api 那个是比较老的.而且被优先加载了.

解决方法: 将自己引用的servlet api 放在前面 

http-500:Servlet.init() for servlet SpringDispatcherServlet threw exception

http-500:Servlet.init() for servlet SpringDispatcherServlet threw exception

在使用solr与spring一起后,配置完再去访问,总是找不到controller。很愁,找不到原因,愿大神指点一二,感激。。。

controller层

package com.lxy.main;

import com.lxy.entity.ResultModel;
import com.lxy.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * Created by BlingBlingBling on 2017/8/18.
 */
@Controller
@RequestMapping("/product")
public class ProductController {

    @Autowired
    private ProductService service;

    @RequestMapping("/list")
    public String list(String querything, String catalog_name,
                       String price, String sort,
                       Integer page, Model model) throws Exception{

        ResultModel rm = service.getProducts(querything, catalog_name, price, sort, page);

        //将查询结果防到request作用域
        model.addAttribute("result",rm);

        //简单类型的数据回显
        model.addAttribute("querything",querything);
        model.addAttribute("catalog_name",catalog_name);
        model.addAttribute("price",price);
        model.addAttribute("sort",sort);
        model.addAttribute("page",page);

        return  "product_list";
    }

}

service

package com.lxy.service;

import com.lxy.entity.ResultModel;

/**
 * Created by BlingBlingBling on 2017/8/18.
 */
public interface ProductService {
    public ResultModel getProducts(String querything,String catalogName,String price,String sort,Integer page) throws Exception;
}

serviceImpl

package com.lxy.service.impl;

import com.lxy.entity.Products;
import com.lxy.entity.ResultModel;
import com.lxy.service.ProductService;
import org.apache.commons.lang.StringUtils;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.impl.HttpSolrServer;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * Created by BlingBlingBling on 2017/8/18.
 */
@Service
public class ProductServiceImpl implements ProductService{

    @Autowired
    //依赖注入server
    private HttpSolrServer server;

    @Override
    public ResultModel getProducts(String querything, String catalogName, String price, String sort, Integer page) throws Exception {

        //创建SolrQuery对象
        SolrQuery query = new SolrQuery();

        //输入关键字
        if(StringUtils.isNotEmpty(querything)){
            query.setQuery(querything);
        }else{
            query.setQuery("*:*");
        }

        //输入商品分类过滤条件
        if(StringUtils.isNotEmpty(catalogName)){
            query.addFilterQuery("product_catalog_name:"+catalogName);
        }

        // 输入价格区间过滤条件
        // price的值:0-9 10-19
        if (StringUtils.isNotEmpty(price)) {
            String[] ss = price.split("-");
            if (ss.length == 2) {
                query.addFilterQuery("product_price:[" + ss[0] + " TO " + ss[1]
                        + "]");
            }
        }

        // 设置排序
        if ("1".equals(sort)) {
            query.setSort("product_price", SolrQuery.ORDER.desc);
        } else {
            query.setSort("product_price", SolrQuery.ORDER.asc);
        }

        // 设置分页信息
        if (page == null)
            page = 1;

        query.setStart((page - 1) * 20);
        query.setRows(20);

        // 设置默认域
        query.set("df", "product_keywords");

        // 设置高亮信息
        query.setHighlight(true);
        query.addHighlightField("product_name");
        query.setHighlightSimplePre("<font style=\"color:red\" >");
        query.setHighlightSimplePost("</font>");

        QueryResponse response = server.query(query);
        // 查询出的结果
        SolrDocumentList results = response.getResults();
        // 记录总数
        long count = results.getNumFound();

        List<Products> products = new ArrayList<>();
        Products prod;

        // 获取高亮信息
        Map<String, Map<String, List<String>>> highlighting = response
                .getHighlighting();
        for (SolrDocument doc : results) {
            prod = new Products();

            // 商品ID
            prod.setPid(Integer.parseInt(doc.get("id").toString()));

            List<String> list = highlighting.get(doc.get("id")).get(
                    "product_name");
            // 商品名称
            if (list != null)
                prod.setName(list.get(0));
            else {
                prod.setName(doc.get("product_name").toString());
            }

            // 商品价格
            prod.setPrice(Integer.parseInt(doc.get("product_price").toString()));
            // 商品图片地址
            prod.setPicture(doc.get("product_picture").toString());

            products.add(prod);
        }

        // 封装ResultModel对象
        ResultModel rm = new ResultModel();
        rm.setProductList(products);
        rm.setCurPage(page);
        rm.setRecordCount(count);

        int pageCount = (int) (count / 20);

        if (count % 20 > 0)
            pageCount++;
        // 设置总页数
        rm.setPageCount(pageCount);

        return rm;
    }
}

spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:util="http://www.springframework.org/schema/util"
   xmlns:jdbc="http://www.springframework.org/schema/jdbc"
   xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
   
   <!-- 扫描service,mapper包 -->
   <!--<context:component-scan base-package="com.lxy"></context:component-scan>-->
   
   <!-- 引入配置文件 -->
   <!--<bean id="propertyConfigurer"
>
      <property name="location" value="classpath:jdbc.properties" />
   </bean>-->
   
   <!-- 创建数据源(数据库连接池使用DBCP) -->
   <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
      <!--<property name="driverClassName" value="${driver}"></property>
      <property name="url" value="${url}"></property>
      <property name="username" value="${username}"></property>
      <property name="password" value="${password}"></property>-->
   </bean>
   
   <!-- MyBatis -->   
   <!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
   <!--<bean id="sqlSessionFactory">
      <property name="dataSource" ref="dataSource" />
   </bean>-->
   
   <!-- Mapper接口所在包名,Spring会自动查找其下的类 -->
   <!--<bean>
      <property name="basePackage" value="com.lxy.mapper" />
      <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
   </bean>-->
   
   <!-- spring -->
   <!-- 配置事务 -->
   <bean id="transactionManager"
      class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <property name="dataSource" ref="dataSource" />
   </bean>
   
   <!-- 开启事务控制的注解支持 -->  
    <tx:annotation-driven transaction-manager="transactionManager"/>
   
</beans>

spring-mvc.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:context="http://www.springframework.org/schema/context"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xmlns:mvc="http://www.springframework.org/schema/mvc"
   xmlns:p="http://www.springframework.org/schema/p"
   xmlns:util="http://www.springframework.org/schema/util"
   xmlns:jdbc="http://www.springframework.org/schema/jdbc"
   xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.0.xsd
      http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
      http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd">
   
   <!-- 扫描controller -->
   <context:component-scan base-package="com.lxy.main"></context:component-scan>
   
   <!-- 配置返回页面 -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/jsp/" />
      <property name="suffix" value=".jsp" />
   </bean>


   <!-- 配置HttpSolrServer -->
   <bean class="org.apache.solr.client.solrj.impl.HttpSolrServer">
      <constructor-arg value="http://localhost:8080/solr/"></constructor-arg>
   </bean>
   
</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

    <!-- 配置springMVC的核心控制器  Start-->
    <!-- spring MVC DispatcherServlet -->
    <servlet>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>SpringDispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- 配置springMVC的核心控制器  End-->

    <!-- 配置spring  Start-->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 配置spring  End-->

    <!-- 过滤器 -->
    <filter>
        <filter-name>EncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>EncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <!-- 欢迎页面 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

</web-app>
org.springframework.beans.factory.BeanCreationException: Error creating bean with name ''productController'': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lxy.service.ProductService com.lxy.main.ProductController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.lxy.service.ProductService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:292)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
	org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	javax.servlet.GenericServlet.init(GenericServlet.java:160)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	java.lang.Thread.run(Thread.java:745)

 

root cause

org.springframework.beans.factory.BeanCreationException: Could not autowire field: private com.lxy.service.ProductService com.lxy.main.ProductController.service; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.lxy.service.ProductService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:508)
	org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
	org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
	org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	javax.servlet.GenericServlet.init(GenericServlet.java:160)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	java.lang.Thread.run(Thread.java:745)

 

报错信息

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.lxy.service.ProductService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
	org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoSuchBeanDefinitionException(DefaultListableBeanFactory.java:1100)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:855)
	org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:480)
	org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87)
	org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1185)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537)
	org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475)
	org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304)
	org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228)
	org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300)
	org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195)
	org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700)
	org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760)
	org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
	org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:643)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:606)
	org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:657)
	org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:525)
	org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:466)
	org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:136)
	javax.servlet.GenericServlet.init(GenericServlet.java:160)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
	org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
	java.lang.Thread.run(Thread.java:745)

这是代码,辛苦各位大神看一下,帮帮忙,谢谢!

idea 启动 springboot 项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader () L...

idea 启动 springboot 项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader () L...

有一次启动 springboot 项目的时候,报了一个非常奇怪的错误,说是找不到 servletContext,springboot 不是自带 tomcat 的吗?

在网上找了好久,说是用以下方式解决。

解决方式:

将 tomcat 的 lib 包下的 servlet-api.jar 拷贝到 java 的 jre 下的 lib 里即可。(需要在 idea 中重新导入一下 jdk)

mac 电脑下寻找 java 安装目录方式:在终端下执行  

/usr/libexec/java_home -V 

但是查看同事的 java 的 jre 包下并没有这个 jar,但是人家都能启动起来。这个就不知到为什么了?

虽然自己解决了这个问题,却不知所以然。。。。

后来我发现我们的项目里用的是 undertow 服务器,难道是跟这个有关系吗?

 2. 另一种解决方式:

今天将项目的服务器由 tomcat 换成 undertow, 发现项目在本地可以启动成功,但是发不到服务器就启动不成功,就报跟上面同样的错误,原来是我本地的 jre 环境有 sevlet-api,但是我不能也往服务器的 jre 也放同样的吧,毕竟这样不合理。后来就查找原因,原来是 undertow 的 jar 包中已经有了 sevlet-api 3.1 版本的,但是为何启动不成功呢,原来我的另一个 jar 包中也有 sevlet-api,而且还是 2.5 版本的,

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>compile</scope>
</dependency>
项目在启动的时候优先找到了2.5版本的,而2.5版本的ServletContext类里没有getClassLoader这个方法,所以才报的错,解决方式是将2.5版本的排除,服务器就启动成功了。
总结:看来maven项目的依赖还得多研究。

关于在运行Spring MVC应用程序时在SpringBoot中获取NoSuchMethodError:javax.servlet.ServletContext.addServlet的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于Eclipse启动SpringBoot报Caused by: java.lang.NoSuchMethodError: javax.servlet.http、groovy servlet java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I、http-500:Servlet.init() for servlet SpringDispatcherServlet threw exception、idea 启动 springboot 项目 报错:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getClassLoader () L...等相关内容,可以在本站寻找。

本文标签: