如何从Tomcat类路径中排除Eclipse插件库JAR

如何从Tomcat类路径中排除Eclipse插件库JAR,eclipse,Eclipse,我有一个SpringMVC项目,它使用Maven导入Eclipse开普勒SR1JEE,并在Eclipse中部署到Tomcat7。一切都很好,直到最近我将elasticsearch作为一个依赖项添加到Maven pom文件中,现在当我启动Tomcat时,我得到了一个异常 java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Ser

我有一个SpringMVC项目,它使用Maven导入Eclipse开普勒SR1JEE,并在Eclipse中部署到Tomcat7。一切都很好,直到最近我将elasticsearch作为一个依赖项添加到Maven pom文件中,现在当我启动Tomcat时,我得到了一个异常

java.lang.ClassCastException: org.springframework.web.servlet.DispatcherServlet cannot be cast to javax.servlet.Servlet
在详细模式下启动服务器时,我发现这是因为servlet API现在从两个位置加载: Tomcat安装文件夹,它通常来自该文件夹

Loaded javax.servlet.Servlet from file:/C:/ProgramFiles/apache-tomcat-7.0.33/lib/servlet-api.jar
但也来自我安装的一个Eclipse插件(Groovy)

Loaded javax.servlet.Servlet from file:/C:/ProgramFiles/eclipse/plugins/org.codehaus.groovy_1.8.6.xx-20130703-1600-e43-RELEASE/lib/servlet-api-2.4.jar
我不明白为什么会这样。如果我重命名插件库文件夹中的servlet jar文件(即,将扩展名从.jar更改为其他文件,使其无法识别),Tomcat将毫无例外地启动,但这是一个黑客行为,因此我想知道原因是什么,以及我是否缺少从Tomcat类路径中排除插件库jar的一些配置


谢谢。

既然您似乎在使用maven,那么在您的maven依赖项中,您可以说jar仅用于编译。但我不太确定这是您的问题,pom中的servlet依赖项设置为“compile”。我不认为这是Maven设置的问题,但我提到了Maven设置,以防它可能与m2e插件有关。我在这个项目中有很多第三方库都工作得很好,我不知道为什么elasticsearch会这样做。Elasticsearch确实支持Groovy API,但我没有包含该依赖项(它是一个单独的jar),因此我甚至看不到连接。我猜Groovy插件可能也设置在类路径中。我去了“项目属性->Java构建路径->库”,除了JRE JAR,所有其他插件都来自我的本地maven存储库文件夹。我确实有groovy all jar作为依赖项(也来自maven repository文件夹),但我已经有很长时间了