可以看到是javax.servlet.ServletContext类重复,分别去两个包下寻找getVirtualServerName()方法,可以看到在servlet-api-2.5.jar下没有该方法而tomcat-embed-core-9.0.41.jar有该方法,那么只要将servlet-api-2.5.jar屏蔽掉或者改为test就可以了
很巧的是spring-cloud-starter-netflix-eureka-server恰恰依赖servlet-api,在pom文件中屏蔽掉后exception消失
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
<version>2.2.6.RELEASE</version>
<!-- <exclusions>-->
<!-- <exclusion>-->
<!-- <groupId>javax.servlet</groupId>-->
<!-- <artifactId>servlet-api</artifactId>-->
<!-- </exclusion>-->
<!-- </exclusions>-->
</dependency>