java.lang.ClassCastException:spark.servlet.SparkFilter无法转换为javax.servlet.Filter

java.lang.ClassCastException:spark.servlet.SparkFilter无法转换为javax.servlet.Filter,java,maven,tomcat,servlets,Java,Maven,Tomcat,Servlets,我正试图通过Tomcat>运行Java Spark Web服务,我正在使用Maven。maven应用程序可以编译,但当我执行mvn tomcat:run时,我得到以下结果: [INFO] Scanning for projects... [INFO] [INFO] --------------------------------------------

我正试图通过Tomcat>运行Java Spark Web服务,我正在使用Maven。maven应用程序可以编译,但当我执行
mvn tomcat:run
时,我得到以下结果:

[INFO] Scanning for projects...
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building art2 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] >>> tomcat-maven-plugin:1.1:run (default-cli) @ art2 >>>
[INFO] 
[INFO] --- maven-resources-plugin:2.3:resources (default-resources) @ art2 ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory /home/pierceg/SR_Repos/ART2/art2_java/src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.2:compile (default-compile) @ art2 ---
[INFO] No sources to compile
[INFO] 
[INFO] <<< tomcat-maven-plugin:1.1:run (default-cli) @ art2 <<<
[INFO] 
[INFO] --- tomcat-maven-plugin:1.1:run (default-cli) @ art2 ---
[INFO] Running war on http://localhost:8080/art2
[INFO] Using existing Tomcat server configuration at /home/pierceg/SR_Repos/ART2/art2_java/target/tomcat
Aug 05, 2015 2:26:14 PM org.apache.catalina.startup.Embedded start
INFO: Starting tomcat server
Aug 05, 2015 2:26:14 PM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/6.0.29
Aug 05, 2015 2:26:14 PM org.apache.catalina.core.StandardContext filterStart
SEVERE: Exception starting filter SparkFilter
java.lang.ClassCastException: spark.servlet.SparkFilter cannot be cast to javax.servlet.Filter
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:422)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:115)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4001)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4651)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:785)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
    at org.apache.catalina.startup.Embedded.start(Embedded.java:825)
    at org.codehaus.mojo.tomcat.AbstractRunMojo.startContainer(AbstractRunMojo.java:558)
    at org.codehaus.mojo.tomcat.AbstractRunMojo.execute(AbstractRunMojo.java:255)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
    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:497)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)

Aug 05, 2015 2:26:14 PM org.apache.catalina.core.StandardContext start
SEVERE: Error filterStart
Aug 05, 2015 2:26:14 PM org.apache.catalina.core.StandardContext start
SEVERE: Context [/art2] startup failed due to previous errors
[INFO]正在扫描项目。。。
[信息]
[信息]------------------------------------------------------------------------
[信息]构建art2 0.0.1-SNAPSHOT
[信息]------------------------------------------------------------------------
[信息]
[信息]>>>tomcat maven插件:1.1:run(默认cli)@art2>>>
[信息]
[信息]---maven资源插件:2.3:resources(默认资源)@art2---
[信息]使用“UTF-8”编码复制筛选的资源。
[信息]跳过不存在的resourceDirectory/home/piercg/SR_Repos/ART2/ART2_java/src/main/resources
[信息]
[信息]---maven编译器插件:3.2:compile(默认编译)@art2---
[信息]没有要编译的源
[信息]

[INFO]在pom.xml中包含对spark core的依赖时,需要排除jetty:

<dependencies>
    <dependency>
        <groupId>com.sparkjava</groupId>
        <artifactId>spark-core</artifactId>
        <version>2.1</version>
        <exclusions>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-server</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-webapp</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
</dependencies>

com.sparkjava
火花芯
2.1
org.eclipse.jetty
jetty服务器
org.eclipse.jetty
jetty网络应用程序

我遇到了一个类似的问题,通过将Javax Servlet从我的
pom.xml
文件中的
spark core
依赖项中排除,解决了这个问题,如下所示:

<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.5.5</version>
    <exclusions>
        <exclusion>
            <artifactId>javax.servlet-api</artifactId>
            <groupId>javax.servlet</groupId>
        </exclusion>
    </exclusions>
</dependency>

com.sparkjava
火花芯
2.5.5
javax.servlet-api
javax.servlet

使用Maven时,您不一定需要在项目的物理
WEB-INF
文件夹中有任何内容,但Maven在构建过程中可能包括
pom.xml
WEB-INF/lib
中指定的未提供的依赖项。你已经排除了吗?问题中没有明确说明这一点。一种方法是让Maven生成一个具体的WAR文件,然后使用某种ZIP工具提取并检查它。您使用哪个版本的Spark和哪个版本的Tomcat?如果您共享您的
pom.xml
文件,它将非常有用。
<dependency>
    <groupId>com.sparkjava</groupId>
    <artifactId>spark-core</artifactId>
    <version>2.5.5</version>
    <exclusions>
        <exclusion>
            <artifactId>javax.servlet-api</artifactId>
            <groupId>javax.servlet</groupId>
        </exclusion>
    </exclusions>
</dependency>