Tomcat启动时报这个错误,版本tomcat9。DEBUG org.springframework.web.servlet.resource.ResourceUrlProvider - Looking for resource handler mappings
DEBUG org.springframework.web.servlet.resource.ResourceUrlProvider - No resource handling mappings found
05-May-2019 10:07:18.572 严重 [Thread-11] org.apache.catalina.core.ContainerBase.removeChild Error destroying child
DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [java:comp/env/spring.liveBeansView.mbeanDomain]
 org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] in state [STARTED]
DEBUG org.springframework.jndi.JndiLocatorDelegate - Converted JNDI name [java:comp/env/spring.liveBeansView.mbeanDomain] not found - trying original name [spring.liveBeansView.mbeanDomain]. javax.naming.NameNotFoundException: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].
at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:431)
DEBUG org.springframework.jndi.JndiTemplate - Looking up JNDI object with name [spring.liveBeansView.mbeanDomain]
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:317)
DEBUG org.springframework.jndi.JndiPropertySource - JNDI lookup for name [spring.liveBeansView.mbeanDomain] threw NamingException with message: Name [spring.liveBeansView.mbeanDomain] is not bound in this Context. Unable to find [spring.liveBeansView.mbeanDomain].. Returning null.
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:814)
DEBUG org.springframework.core.env.PropertySourcesPropertyResolver - Could not find key 'spring.liveBeansView.mbeanDomain' in any property source
at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1016)
DEBUG org.springframework.web.servlet.DispatcherServlet - Published WebApplicationContext of servlet 'dispatcher' as ServletContext attribute with name [org.springframework.web.servlet.FrameworkServlet.CONTEXT.dispatcher]
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:322)
INFO  org.springframework.web.servlet.DispatcherServlet - FrameworkServlet 'dispatcher': initialization completed in 6329 ms
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:814)
DEBUG org.springframework.web.servlet.DispatcherServlet - Servlet 'dispatcher' configured successfully
at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1016)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:322)
at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:558)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:322)
at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:1063)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:322)
at org.apache.catalina.startup.Catalina.stop(Catalina.java:712)
at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:808)05-May-2019 10:07:18.574 严重 [RMI TCP Connection(5)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke Exception invoking method [createStandardContext]
 javax.management.InstanceNotFoundException: Catalina:type=Deployer,host=localhost
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:816)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:460)
at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:406)
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.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:289)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
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 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:835)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)[2019-05-05 10:07:18,967] Artifact SurnameMuseum:war: Error during artifact deployment. See server log for details.
Disconnected from server

解决方案 »

  1.   

    在网上看到说,是因为Servlet配置的问题。我采用的是Spring4全注解配置,以下是Servlet的配置类:package cn.htkjsoft.surnamemuseum.config;import java.nio.charset.Charset;
    import java.util.List;
    import cn.htkjsoft.surnamemuseum.controller.ViewController;
    import com.fasterxml.jackson.databind.ObjectMapper;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.http.converter.HttpMessageConverter;
    import org.springframework.http.converter.StringHttpMessageConverter;
    import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
    import org.springframework.web.multipart.support.StandardServletMultipartResolver;
    import org.springframework.web.servlet.ViewResolver;
    import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.InternalResourceViewResolver;
    import cn.htkjsoft.surnamemuseum.handler.advice.RestApiHandleAdvice;
    import org.springframework.web.servlet.view.UrlBasedViewResolver;/**
     * MVC 配置
     */
    @Configuration
    @EnableWebMvc
    @ComponentScan(basePackageClasses={cn.htkjsoft.surnamemuseum.rest.v1._PackageScanMark.class})
    public class ServletConfig extends WebMvcConfigurerAdapter{ //定义视图解析器Bean
    @Bean
    public ViewResolver viewResolver(){
    InternalResourceViewResolver resolver=new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/page/");
    resolver.setSuffix(".jsp");
    resolver.setOrder(1);
    resolver.setExposeContextBeansAsAttributes(true);
    return resolver;
    } @Bean
    public UrlBasedViewResolver urlBasedViewResolver(){
    InternalResourceViewResolver resolver=new InternalResourceViewResolver();
    resolver.setPrefix("/WEB-INF/page/");
    resolver.setSuffix(".html");
    resolver.setOrder(0);
    return resolver;
    } @Bean
    public StandardServletMultipartResolver multipartResolver(){
    return new StandardServletMultipartResolver();
    }

    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
    configurer.enable();
    }

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
    StringHttpMessageConverter stringHttpMessageConverter=new StringHttpMessageConverter(Charset.forName("UTF-8"));
    MappingJackson2HttpMessageConverter jackson2HttpMessageConverter=new MappingJackson2HttpMessageConverter();
    ObjectMapper objectMapper=new ObjectMapper();
    // objectMapper.setSerializationInclusion(JsonInclude.Include.);
            jackson2HttpMessageConverter.setObjectMapper(objectMapper);
    converters.add(stringHttpMessageConverter);
    converters.add(jackson2HttpMessageConverter);
    }

    @Bean
    public RestApiHandleAdvice restApiHandleAdvice(){
    return new RestApiHandleAdvice();
    } @Bean
        public ViewController viewController(WebSecurityConfig securityConfig){
        return new ViewController(securityConfig.tokenHeader);
        }
    }
    Web容器初始化的配置类:package cn.htkjsoft.surnamemuseum.config;import javax.servlet.Filter;
    import javax.servlet.MultipartConfigElement;
    import javax.servlet.ServletContext;
    import javax.servlet.ServletRegistration.Dynamic;
    import org.apache.logging.log4j.web.Log4jServletContextListener;
    import org.springframework.web.filter.CharacterEncodingFilter;
    import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
    import cn.htkjsoft.surnamemuseum.listener.ContextFinalizerListener;/**
     * WEB容器初始化
     */
    public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer{    /**
         * 最大上传文件大小
         */
        public static final long MAX_FILE_SIZE=52428800L;//50MB    /**
         * 最大上传请求大小
         */
        public static final long MAX_REQUEST_SIZE=52428800L;//50MB @Override
    protected Class<?>[] getRootConfigClasses() {
    return new Class<?>[]{RootConfig.class};
    } @Override
    protected Class<?>[] getServletConfigClasses() {
    return new Class<?>[]{ServletConfig.class};
    } @Override
    protected String[] getServletMappings() {
    return new String[]{"/"};
    } @Override
    protected void registerContextLoaderListener(ServletContext servletContext) {
    servletContext.addListener(ContextFinalizerListener.class);
    servletContext.addListener(Log4jServletContextListener.class);
    super.registerContextLoaderListener(servletContext);
    } @Override
    protected Filter[] getServletFilters() {
    //配置 CharacterEncodingFilter 解决post提交乱码问题 
    CharacterEncodingFilter characterEncodingFilter=new CharacterEncodingFilter();
    characterEncodingFilter.setEncoding("utf-8");
    return new Filter[]{characterEncodingFilter};
    } @Override
    protected void customizeRegistration(Dynamic registration) {
    registration.setMultipartConfig(new MultipartConfigElement("",MAX_FILE_SIZE,MAX_REQUEST_SIZE,0));
    }
    }
      

  2.   

    错误信息06-May-2019 00:04:43.423 严重 [Thread-8] org.apache.catalina.core.ContainerBase.removeChild Error destroying child
     org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[]] in state [STARTED]
    at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:430)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:316)
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:814)
    at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1016)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:321)
    at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:814)
    at org.apache.catalina.core.ContainerBase.destroyInternal(ContainerBase.java:1016)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:321)
    at org.apache.catalina.core.StandardService.destroyInternal(StandardService.java:558)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:321)
    at org.apache.catalina.core.StandardServer.destroyInternal(StandardServer.java:1067)
    at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:321)
    at org.apache.catalina.startup.Catalina.stop(Catalina.java:707)
    at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:803)06-May-2019 00:04:43.425 严重 [RMI TCP Connection(3)-127.0.0.1] org.apache.tomcat.util.modeler.BaseModelMBean.invoke Exception invoking method [createStandardContext]
     javax.management.InstanceNotFoundException: Catalina:type=Deployer,host=localhost
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.getMBean(DefaultMBeanServerInterceptor.java:1095)
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:816)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:460)
    at org.apache.catalina.mbeans.MBeanFactory.createStandardContext(MBeanFactory.java:406)
    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.apache.tomcat.util.modeler.BaseModelMBean.invoke(BaseModelMBean.java:289)
    [2019-05-06 12:04:43,445] Artifact SurnameMuseum:war exploded: Error during artifact deployment. See server log for details.
    at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
    at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
    at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
    at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
    at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
    at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
    at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
    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 sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:346)
    at sun.rmi.transport.Transport$1.run(Transport.java:200)
    at sun.rmi.transport.Transport$1.run(Transport.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    at java.security.AccessController.doPrivileged(Native Method)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:748)Disconnected from server