sprintboot 里tomcat版本的问题

今天把一个项目搬到电脑上,在原来的电脑上是好的,但搬过来时报错:

java.lang.AbstractMethodError: org.apache.tomcat.websocket.server.WsFilter.destroy()V
	at org.apache.catalina.core.ApplicationFilterConfig.release(ApplicationFilterConfig.java:301) ~[tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardContext.filterStop(StandardContext.java:4565) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5388) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1400) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1389) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_131]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_131]
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_131]
	at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:976) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1400) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1389) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [na:1.8.0_131]
	at java.util.concurrent.FutureTask.run(FutureTask.java) [na:1.8.0_131]
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-embed-core-9.0.27.jar:9.0.27]
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [na:1.8.0_131]
	at org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:976) [tomcat-embed-core-9.0.27.jar:9.0.27].......

最后发现这里的tomcat包版本是9.0.27的?然而我电脑上的是8.0.9的,在项目里也配置了使用本地tomcat8.0.9的版本,但项目启动还是使用的是9.0.27的?我用的IDEA2019,这个错误是这个原因吗,如果是怎么修改?

你这个tomcat-embed-core-9.0.27.jar:9.0.27 是内嵌的,你可以去pom.xml修改Tomcat<version></version>

问题没有解决 还是一样的

这运行时找不到方法。很显然就是因为版本问题带来的。新版的Tomcat可能删除了这个方法。你保持一致就是了。

你如果用springboot。建议不要去修改Tomcat的版本啊。

就是说把我本地的TOMCAT版本也改成9.0.27吗?

讲道理来说。springboot的运行不需要外部的Tomcat。你是以War形式部署的吗?

没有啊 我也奇怪 为什么拿到这电脑上就不行了 我也没启动本地TOMCAT 就是在IDEA里运行的,但就报那个方法的错误

@alers_2080 我看错了。不是 “这运行时找不到方法”,而是“调用到了抽象方法”’。你检查一下你当前的jdk版本是 jdk8 以上?