在 WebFlux 中创建名为 requestMappingHandlerMapping 的 bean 时出错(没有 Spring Boot)

Posted

技术标签:

【中文标题】在 WebFlux 中创建名为 requestMappingHandlerMapping 的 bean 时出错(没有 Spring Boot)【英文标题】:Error creating bean with name requestMappingHandlerMapping in WebFlux (without Spring Boot) 【发布时间】:2018-07-26 21:46:23 【问题描述】:

我正在尝试将一个简单的项目从 Spring MVC 5 迁移到 Spring WebFlux。我尝试在不显着改变项目结构的情况下做到这一点。

我想像在 Spring MVC 中一样通过 WebApplicationInitializer 接口进行初始化。

public class AppInitializer implements WebApplicationInitializer 

    @Override
    public void onStartup(ServletContext servletContext) 
        AnnotationConfigWebApplicationContext cxt = new AnnotationConfigWebApplicationContext();
        cxt.register(WebMvcConfig.class);

        DispatcherServlet servlet = new DispatcherServlet(cxt);

        ServletRegistration.Dynamic registration = servletContext.addServlet("dispatcher", servlet);
        registration.setLoadOnStartup(1);
        registration.addMapping("/");
    

下面是我使用 Spring WebFlux 的配​​置:

public class AppInitializer implements WebApplicationInitializer 

    @Override
    public void onStartup(ServletContext servletContext) 
        AnnotationConfigApplicationContext fluxContext =
            new AnnotationConfigApplicationContext(WebFluxConfig.class, MongoConfiguration.class);

        HttpHandler httpHandler = WebHttpHandlerBuilder.applicationContext(fluxContext).build();
        ServletHttpHandlerAdapter handlerAdapter = new ServletHttpHandlerAdapter(httpHandler);
        ServletRegistration.Dynamic fluxServlet = servletContext.addServlet("dispatcher", handlerAdapter);

        fluxServlet.setLoadOnStartup(1);
        fluxServlet.setAsyncSupported(true);
        fluxServlet.addMapping("/");
    

不幸的是,使用此配置创建名称为“requestMappingHandlerMapping”和名称为“webHandler”的 bean 时存在问题。

下面的堆栈跟踪:

2018 年 2 月 16 日 02:18:15.448 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent 在 java.library.path 上找不到基于 APR 的 Apache Tomcat Native 库,该库允许在生产环境中获得最佳性能: [/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib] 2018 年 2 月 16 日 02:18:15.927 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["http-nio-8080"] 16-Feb-2018 02:18:15.946 INFO [main] org.apache.tomcat.util.net.NioselectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 16-Feb-2018 02:18:16.004 SEVERE [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol [h2] 的升级处理程序 [org.apache.coyote.http2.Http2Protocol] 仅支持通过 ALPN 升级,但具有已为不支持 ALPN 的 ["https-jsse-nio-8443"] 连接器配置。 2018 年 2 月 16 日 02:18:16.005 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["https-jsse-nio-8443"] 16-Feb-2018 02:18:17.221 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2018 年 2 月 16 日 02:18:17.235 信息 [main] org.apache.coyote.AbstractProtocol.init 初始化 ProtocolHandler ["ajp-nio-8009"] 16-Feb-2018 02:18:17.239 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector 使用共享选择器进行 servlet 写入/读取 2018 年 2 月 16 日 02:18:17.243 INFO [main] org.apache.catalina.startup.Catalina.load 初始化在 2721 毫秒内处理 16-Feb-2018 02:18:17.309 INFO [main] org.apache.catalina.core.StandardService.startInternal 启动服务 [Catalina] 2018 年 2 月 16 日 02:18:17.309 信息 [main] org.apache.catalina.core.StandardEngine.startInternal 启动 Servlet 引擎:Apache Tomcat/9.0.4 2018 年 2 月 16 日 02:18:17.320 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["http-nio-8080"] 2018 年 2 月 16 日 02:18:17.335 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["https-jsse-nio-8443"] 2018 年 2 月 16 日 02:18:17.347 信息 [main] org.apache.coyote.AbstractProtocol.start 启动 ProtocolHandler ["ajp-nio-8009"] 16-Feb-2018 02:18:17.359 INFO [main] org.apache.catalina.startup.Catalina.start 服务器在 115 毫秒内启动 2018 年 2 月 16 日 02:18:19.991 INFO [RMI TCP Connection(4)-127.0.0.1] org.apache.jasper.servlet.TldScanner.scanJars 至少对一个 JAR 进行了 TLD 扫描,但未包含 TLD。启用此记录器的调试日志记录以获取已扫描但未在其中找到 TLD 的 JAR 的完整列表。在扫描期间跳过不需要的 JAR 可以缩短启动时间和 JSP 编译时间。 2018 年 2 月 16 日 02:18:22.251 INFO [RMI TCP Connection(4)-127.0.0.1] com.mongodb.diagnostics.logging.JULLogger.log 使用设置 hosts=[127.0.0.1:27017]、模式创建的集群=SINGLE, requiredClusterType=UNKNOWN, serverSelectionTimeout='30000 ms', maxWaitQueueSize=500 2018 年 2 月 16 日 02:18:22.461 信息 [cluster-ClusterIdvalue='5a86315ee7d358509d90c5bf', description='null'-127.0.0.1:27017] com.mongodb.diagnostics.logging.JULLogger.log 打开的连接 [connectionId localValue:1, serverValue:43] 到 127.0.0.1:27017 16-Feb-2018 02:18:22.467 INFO [cluster-ClusterIdvalue='5a86315ee7d358509d90c5bf', description='null'-127.0.0.1:27017] com.mongodb.diagnostics.logging.JULLogger.log 监控线程成功连接到服务器,描述 ServerDescriptionaddress=127.0.0.1:27017, type=STANDALONE, state=CONNECTED, ok=true, version=ServerVersionversionList=[3, 6, 2], minWireVersion=0, maxWireVersion=6, maxDocumentSize =16777216,roundTripTimeNanos=803425 2018 年 2 月 16 日 02:18:23.588 严重 [RMI TCP 连接(4)-127.0.0.1] org.apache.catalina.core.ContainerBase.addChildInternal ContainerBase.addChild:开始: org.apache.catalina.LifecycleException:无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:740) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:716) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703) 在 org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1726) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) 在 javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 在 javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) 在 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) 在 javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) 在 sun.rmi.transport.Transport$1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1.run(Transport.java:197) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.Transport.serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 原因:org.springframework.beans.factory.BeanCreationException:创建 org.springframework.web.reactive.config.DelegatingWebFluxConfiguration 中定义的名称为“webHandler”的 bean 时出错:bean 的初始化失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建 org.springframework.web.reactive.config.DelegatingWebFluxConfiguration 中定义的名称为“requestMappingHandlerMapping”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.NoSuchMethodError: org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping.obtainApplicationContext()Lorg/springframework/context/ApplicationContext; 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:591) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502) 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:761) 在 org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) 在 org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) 在 org.springframework.context.annotation.AnnotationConfigApplicationContext.(AnnotationConfigApplicationContext.java:84) 在 pl.goralczyka.thesis.store.system.config.AppInitializer.onStartup(AppInitializer.java:17) 在 org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:172) 在 org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5094) 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ... 42 更多 原因:org.springframework.beans.factory.BeanCreationException:创建 org.springframework.web.reactive.config.DelegatingWebFluxConfiguration 中定义的名称为“requestMappingHandlerMapping”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.NoSuchMethodError: org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping.obtainApplicationContext()Lorg/springframework/context/ApplicationContext; 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1710) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:502) 在 org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:312) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:516) 在 org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1194) 在 org.springframework.beans.factory.BeanFactoryUtils.beansOfTypeIncludingAncestors(BeanFactoryUtils.java:311) 在 org.springframework.web.reactive.DispatcherHandler.initStrategies(DispatcherHandler.java:126) 在 org.springframework.web.reactive.DispatcherHandler.setApplicationContext(DispatcherHandler.java:121) 在 org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:121) 在 org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:97) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:423) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1702) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:583) ... 55 更多 引起:java.lang.NoSuchMethodError: org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping.obtainApplicationContext()Lorg/springframework/context/ApplicationContext; 在 org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:158) 在 org.springframework.web.reactive.result.method.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:145) 在 org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:79) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1769) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1706) ... 71 更多 2018 年 2 月 16 日 02:18:23.593 严重 [RMI TCP Connection(4)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 异常调用方法 manageApp java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:744) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:716) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703) 在 org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1726) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) 在 javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 在 javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) 在 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) 在 javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) 在 sun.rmi.transport.Transport$1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1.run(Transport.java:197) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.Transport.serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 2018 年 2 月 16 日 02:18:23.594 严重 [RMI TCP Connection(4)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke 异常调用方法 createStandardContext javax.management.RuntimeOperationsException:异常调用方法manageApp 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:295) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:456) 在 org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:405) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) 在 com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819) 在 com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801) 在 javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468) 在 javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76) 在 javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309) 在 javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401) 在 javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) 在 sun.rmi.transport.Transport$1.run(Transport.java:200) 在 sun.rmi.transport.Transport$1.run(Transport.java:197) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.Transport.serviceCall(Transport.java:196) 在 sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683) 在 java.security.AccessController.doPrivileged(本机方法) 在 sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 java.lang.Thread.run(Thread.java:748) 原因:java.lang.IllegalStateException:ContainerBase.addChild:启动:org.apache.catalina.LifecycleException:无法启动组件[StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] 在 org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:744) 在 org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:716) 在 org.apache.catalina.core.StandardHost.addChild(StandardHost.java:703) 在 org.apache.catalina.startup.HostConfig.manageApp(HostConfig.java:1726) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 org.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:287) ... 33 更多 16-Feb-2018 02:18:27.323 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.deployDirectory 部署 Web 应用程序目录 [/home/adam/servers/apache-tomcat-9.0.4 /webapps/经理] 16-Feb-2018 02:18:27.463 INFO [ContainerBackgroundProcessor[StandardEngine[Catalina]]] org.apache.catalina.startup.HostConfig.deployDirectory Web 应用程序目录部署 [/home/adam/servers/apache-tomcat-9.0. 4/webapps/manager] 已在 [140] 毫秒内完成 2018 年 2 月 16 日 02:24:02.857 INFO [main] org.apache.catalina.core.StandardServer.await 通过关闭端口接收到有效的关闭命令。停止服务器实例。 2018 年 2 月 16 日 02:24:02.857 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停 ProtocolHandler ["http-nio-8080"] 2018 年 2 月 16 日 02:24:02.911 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停 ProtocolHandler ["https-jsse-nio-8443"] 2018 年 2 月 16 日 02:24:02.963 信息 [main] org.apache.coyote.AbstractProtocol.pause 暂停 ProtocolHandler ["ajp-nio-8009"] 16-Feb-2018 02:24:03.015 INFO [main] org.apache.catalina.core.StandardService.stopInternal 停止服务 [Catalina] 2018 年 2 月 16 日 02:24:03.044 信息 [main] org.apache.coyote.AbstractProtocol.stop 停止 ProtocolHandler ["http-nio-8080"] 2018 年 2 月 16 日 02:24:03.051 信息 [main] org.apache.coyote.AbstractProtocol.stop 停止 ProtocolHandler ["https-jsse-nio-8443"] 2018 年 2 月 16 日 02:24:03.052 信息 [main] org.apache.coyote.AbstractProtocol.stop 停止 ProtocolHandler ["ajp-nio-8009"] 2018 年 2 月 16 日 02:24:03.054 信息 [main] org.apache.coyote.AbstractProtocol.destroy 销毁 ProtocolHandler ["http-nio-8080"] 2018 年 2 月 16 日 02:24:03.055 信息 [main] org.apache.coyote.AbstractProtocol.destroy 销毁 ProtocolHandler ["https-jsse-nio-8443"] 2018 年 2 月 16 日 02:24:03.056 信息 [main] org.apache.coyote.AbstractProtocol.destroy 销毁 ProtocolHandler ["ajp-nio-8009"]

有没有人遇到过这样的问题或知道我做错了什么?

【问题讨论】:

【参考方案1】:

好的。我的错误是微不足道的......

通过向 spring-context 添加依赖项解决了问题。

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>$spring-version</version>
</dependency>

【讨论】:

这真的让我很开心。非常感谢。终于解决了这个问题。

以上是关于在 WebFlux 中创建名为 requestMappingHandlerMapping 的 bean 时出错(没有 Spring Boot)的主要内容,如果未能解决你的问题,请参考以下文章

无法在 PostgreSQL 中创建名为“用户”的数据库表

在 tomcat 中创建名为“dataSource”的 bean 时出错

在 Spring Boot 中创建名为“entityManagerFactory”的 bean 时出错

在 Spring Boot 中创建名为“batchConfigurer”的 bean 时出错

如何在 iOS SDK 中创建伞形框架?

为什么我不能在Windows中创建名为'con'的文件夹? [关闭]