Spring Boot 1.4.3嵌入式Tomcat NoSuchMethodError StringManager.getManager

Spring Boot 1.4.3嵌入式Tomcat NoSuchMethodError StringManager.getManager,spring,tomcat,spring-boot,Spring,Tomcat,Spring Boot,我已经将我的项目更新为使用Spring BOOT 1.4.3。代码编译和运行时不会出现Eclipse Neon 1的问题。 但是当我从命令行运行时 mvn clean install -DskipTests java -jar myweb\target\my-web-1.0-SNAPSHOT.jar 我得到运行时错误,tomcat没有启动 Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringMana

我已经将我的项目更新为使用Spring BOOT 1.4.3。代码编译和运行时不会出现Eclipse Neon 1的问题。 但是当我从命令行运行时

mvn clean install -DskipTests

java -jar myweb\target\my-web-1.0-SNAPSHOT.jar
我得到运行时错误,tomcat没有启动

Caused by: java.lang.NoSuchMethodError: org.apache.tomcat.util.res.StringManager.getManager(Ljava/lang/Class;)Lorg/apache/tomcat/util/res/StringManager;
        at org.apache.catalina.util.LifecycleBase.<clinit>(LifecycleBase.java:43) ~[tomcat-embed-core-8.5.6.jar!/:8.5.6]
你能告诉我为什么吗?如何找到在运行时使用的tomcat,据我所知,8.5.6具有编译范围

请帮忙。如果建议在POM文件的属性中使用tomcat.version或添加tomcat juli依赖项,请帮助我理解为什么需要它


不耐烦的堆垛工不会仅仅因为你能行就鞭笞新来者。您可以很容易地询问是否需要我的POM,但我只使用了spring boot starter web,仅此而已。

对于此类问题,通常是由于多个jar在您的类路径中具有相同的类,因此:

通过在Eclipse中打开类型popup CTRL+SHIFT+T,找到这个类/方法的来源。它将显示类路径中包含该类的每个jar。 打开每个jar中的类,看看哪个包含您的方法,哪个不包含。 使用mvn dependency:tree显示项目的依赖关系层次结构 如果这两个JAR在类路径中,则可以排除不包含该方法的JAR。
显然,您不仅使用了SpringBootStarterWeb,因为有些东西正在引入另一个破坏东西的依赖项。所以基本上这个问题包含的信息太少,无法给出答案。谢谢。被接受为答案。Eclipse发现该类存在于2个JAR中。问题是tomcat util jar作为依赖项添加到依赖项目/模块中。它的版本是8.0.27,引导版本是8.5.6。因此产生了冲突