首先上异常内容:
30-Nov-2021 20:28:15.419 严重 [RMI TCP Connection(2)-127.0.0.1] org.apache.catalina.core.ContainerBase.removeChild ContainerBase.removeChild: destroy:
org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/AMRS_war]] in state [STARTED]
at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:292)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:856)
at org.apache.catalina.startup.HostConfig.unmanageApp(HostConfig.java:1762)
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:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at org.apache.catalina.mbeans.MBeanFactory.removeContext(MBeanFactory.java:781)
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:300)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at com.sun.jmx.remote.security.MBeanServerAccessController.invoke(MBeanServerAccessController.java:468)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionIm
可以发现其中重要的也就: org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/AMRS_war]] in state [STARTED]
这表示程序运行中配置的tomcat是在启动状态,被占用无法启动了。这个问题怎么解决呢?毕竟不是代码逻辑上的问题,不是去调整代码就能解决的。
首先,我遇到过很多次这样的问题,以前每次出现就再才运行程序,也就是restart一下,然后基本就能正常运行了。
这次我不停重启,重启软件也都不行。后来发现是打开多个工程(备份的)配置的同一个tomcat,所以这又要怎么解决呢?
【解决:】
1、如果只有一个工程调试运行中出现tomcat启动异常的问题,可以尝试再重新运行一下;
2、如果有多个工程配置的同一个tomcat,并且生成的war包共用一个名称和目录,那么就需要给其他的工程重新配置tomcat了。
从下载tomcat和工程中配置tomcat均可参考以下博客,这里就不详述,基本配置完后就都能正常运行了。
使用IntelliJ IDEA配置Tomcat(详细操作) - 西楼谢俞 - 博客园