尝试在Tomcat上运行项目时出现以下错误。它以前可以工作,但是我将杰克逊版本从1.9.7升级到了1.9.13,更新了maven依赖项后,我再也无法运行该项目了。我试图将杰克逊降级至1.9.7,但没有机会。
SEVERE: Exception starting filter txTrackFilter java.lang.ClassCastException: org.springframework.web.filter.DelegatingFilterProxy 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:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Aug 3, 2014 12:11:02 AM org.apache.catalina.core.StandardContext start SEVERE: Error filterStart
我已经检查了所有与此问题有关的答案。他们都说我需要定义所提供的范围,而我已经拥有了。这是我的servlet-api依赖关系定义。
<dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
我在pom.xml中的任何依赖项下都找不到任何servlet-api依赖项。这是我所有的pom.xml。
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.stg</groupId> <artifactId>stg</artifactId> <name>STG</name> <packaging>war</packaging> <version>1.0.0-BUILD-SNAPSHOT</version> <properties> <java-version>1.6</java-version> <org.springframework-version>3.1.1.RELEASE</org.springframework-version> <org.aspectj-version>1.6.10</org.aspectj-version> <org.slf4j-version>1.6.6</org.slf4j-version> <hibernate.version>4.1.6.Final</hibernate.version> <jackson.version>1.9.13</jackson.version> </properties> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${org.springframework-version}</version> <exclusions> <!-- Exclude Commons Logging in favor of SLF4j --> <exclusion> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${org.springframework-version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- Hibernate --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>${hibernate.version}</version> </dependency> <!-- Jackson --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>${jackson.version}</version> </dependency> <!-- Others --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> <!-- AspectJ --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>${org.aspectj-version}</version> </dependency> <!-- Logging --> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${org.slf4j-version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>jcl-over-slf4j</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${org.slf4j-version}</version> <scope>runtime</scope> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.15</version> <exclusions> <exclusion> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> </exclusion> <exclusion> <groupId>javax.jms</groupId> <artifactId>jms</artifactId> </exclusion> <exclusion> <groupId>com.sun.jdmk</groupId> <artifactId>jmxtools</artifactId> </exclusion> <exclusion> <groupId>com.sun.jmx</groupId> <artifactId>jmxri</artifactId> </exclusion> </exclusions> <scope>runtime</scope> </dependency> <!-- @Inject --> <dependency> <groupId>javax.inject</groupId> <artifactId>javax.inject</artifactId> <version>1</version> </dependency> <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!-- Test --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.7</version> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>1.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.3.1</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.3.2</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.6</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> <version>1.0.0.RELEASE</version> <exclusions> <exclusion> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.0.0.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.0.0.RELEASE</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-eclipse-plugin</artifactId> <version>2.9</version> <configuration> <additionalProjectnatures> <projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> </additionalProjectnatures> <additionalBuildcommands> <buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> </additionalBuildcommands> <downloadSources>true</downloadSources> <downloadJavadocs>true</downloadJavadocs> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> <target>1.6</target> <compilerArgument>-Xlint:all</compilerArgument> <showWarnings>true</showWarnings> <showDeprecation>true</showDeprecation> </configuration> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec-maven-plugin</artifactId> <version>1.2.1</version> <configuration> <mainClass>org.test.int1.Main</mainClass> </configuration> </plugin> </plugins> </build>
这是我项目的mvndependency:tree。
[INFO] +- org.springframework:spring-context:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-aop:jar:3.1.1.RELEASE:compile [INFO] | | \- aopalliance:aopalliance:jar:1.0:compile [INFO] | +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-core:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile [INFO] | \- org.springframework:spring-asm:jar:3.1.1.RELEASE:compile [INFO] +- org.springframework:spring-webmvc:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-context-support:jar:3.1.1.RELEASE:compile [INFO] | \- org.springframework:spring-web:jar:3.1.1.RELEASE:compile [INFO] +- org.springframework:spring-orm:jar:3.1.1.RELEASE:compile [INFO] | +- org.springframework:spring-jdbc:jar:3.1.1.RELEASE:compile [INFO] | \- org.springframework:spring-tx:jar:3.1.1.RELEASE:compile [INFO] +- org.hibernate:hibernate-entitymanager:jar:4.1.6.Final:compile [INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.0.GA:compile [INFO] | +- org.hibernate:hibernate-core:jar:4.1.6.Final:compile [INFO] | | \- antlr:antlr:jar:2.7.7:compile [INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.1_spec:jar:1.0.0.Final:compile [INFO] | +- dom4j:dom4j:jar:1.6.1:compile [INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.0-api:jar:1.0.1.Final:compile [INFO] | +- org.javassist:javassist:jar:3.15.0-GA:compile [INFO] | \- org.hibernate.common:hibernate-commons-annotations:jar:4.0.1.Final:compile [INFO] +- org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13:compile [INFO] | \- org.codehaus.jackson:jackson-core-asl:jar:1.9.13:compile [INFO] +- commons-dbcp:commons-dbcp:jar:1.4:compile [INFO] | \- commons-pool:commons-pool:jar:1.5.4:compile [INFO] +- mysql:mysql-connector-java:jar:5.1.25:compile [INFO] +- org.aspectj:aspectjrt:jar:1.6.10:compile [INFO] +- org.slf4j:slf4j-api:jar:1.6.6:compile [INFO] +- org.slf4j:jcl-over-slf4j:jar:1.6.6:runtime (scope not updated to compile) [INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.6:runtime [INFO] +- log4j:log4j:jar:1.2.15:runtime [INFO] +- javax.inject:javax.inject:jar:1:compile [INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided [INFO] +- junit:junit:jar:4.7:test [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:1.0.0.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:1.0.0.RELEASE:compile [INFO] | | \- org.aspectj:aspectjweaver:jar:1.7.4:compile [INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:1.0.0.RELEASE:compile [INFO] | | \- org.apache.tomcat:tomcat-jdbc:jar:7.0.52:compile [INFO] | | \- org.apache.tomcat:tomcat-juli:jar:7.0.52:compile [INFO] | +- org.springframework.data:spring-data-jpa:jar:1.5.1.RELEASE:compile [INFO] | | \- org.springframework.data:spring-data-commons:jar:1.7.1.RELEASE:compile [INFO] | \- org.springframework:spring-aspects:jar:4.0.3.RELEASE:compile [INFO] +- org.apache.httpcomponents:httpcore:jar:4.3.1:compile [INFO] +- org.apache.commons:commons-lang3:jar:3.3.2:compile [INFO] +- commons-codec:commons-codec:jar:1.6:compile [INFO] +- org.springframework.boot:spring-boot-starter-batch:jar:1.0.0.RELEASE:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.0.0.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot:jar:1.0.0.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-autoconfigure:jar:1.0.0.RELEASE:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:1.0.0.RELEASE:compile [INFO] | | | +- org.slf4j:jul-to-slf4j:jar:1.7.6:compile [INFO] | | | +- org.slf4j:log4j-over-slf4j:jar:1.7.6:compile [INFO] | | | \- ch.qos.logback:logback-classic:jar:1.1.1:compile [INFO] | | | \- ch.qos.logback:logback-core:jar:1.1.1:compile [INFO] | | \- org.yaml:snakeyaml:jar:1.13:runtime [INFO] | +- org.hsqldb:hsqldb:jar:2.3.2:compile [INFO] | \- org.springframework.batch:spring-batch-core:jar:2.2.5.RELEASE:compile [INFO] | +- org.springframework.batch:spring-batch-infrastructure:jar:2.2.5.RELEASE:compile [INFO] | | \- org.springframework.retry:spring-retry:jar:1.0.2.RELEASE:compile [INFO] | \- com.thoughtworks.xstream:xstream:jar:1.3:compile [INFO] | \- xpp3:xpp3_min:jar:1.1.4c:compile [INFO] \- org.springframework.boot:spring-boot-starter-web:jar:1.0.0.RELEASE:compile [INFO] +- org.springframework.boot:spring-boot-starter-tomcat:jar:1.0.0.RELEASE:compile [INFO] | +- org.apache.tomcat.embed:tomcat-embed-core:jar:7.0.52:compile [INFO] | +- org.apache.tomcat.embed:tomcat-embed-el:jar:7.0.52:compile [INFO] | \- org.apache.tomcat.embed:tomcat-embed-logging-juli:jar:7.0.52:compile [INFO] \- com.fasterxml.jackson.core:jackson-databind:jar:2.3.2:compile [INFO] +- com.fasterxml.jackson.core:jackson-annotations:jar:2.3.0:compile [INFO] \- com.fasterxml.jackson.core:jackson-core:jar:2.3.2:compile [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------
我花了几个小时解决这个问题,但被卡住了。即使禁用过滤,我也会遇到与此servlet- api范围问题相关的另一个类强制转换异常。但是我找不到任何servlet-api jar。非常感谢您的帮助。
提前致谢。
终于,我开始工作了。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-batch</artifactId> <version>1.0.0.RELEASE</version> <exclusions> <exclusion> <groupId>org.codehaus.jettison</groupId> <artifactId>jettison</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>1.0.0.RELEASE</version> </dependency>
这些依赖项下有tomcat程序包,其中有servlet程序包。我只将它们用于com.fasterxml.jackson包。真可惜 我删除了这两个,一切恢复正常。感谢Karthikeyan提出的检查Maven依赖文件夹的建议。