Java 使用Tomcat Embedded with Maven启动应用程序

Java 使用Tomcat Embedded with Maven启动应用程序,java,maven,tomcat7,apache-commons-io,tomcat7-maven-plugin,Java,Maven,Tomcat7,Apache Commons Io,Tomcat7 Maven Plugin,我想使用嵌入式tomcat而不是独立版本来启动web应用程序。为了做到这一点,我在pom.xml中声明了tomcat maven插件。当我尝试启动时,我得到了这个错误: Exception in thread "Thread-2" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils at org.apache.tomcat.maven.plugin.tomcat7.run.RunMojo$2.run(RunMojo.ja

我想使用
嵌入式tomcat
而不是独立版本来启动web应用程序。为了做到这一点,我在
pom.xml
中声明了tomcat maven插件。当我尝试启动时,我得到了这个错误:

Exception in thread "Thread-2" java.lang.NoClassDefFoundError: org/apache/commons/io/FileUtils
at org.apache.tomcat.maven.plugin.tomcat7.run.RunMojo$2.run(RunMojo.java:295)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.io.FileUtils
at  org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java:50)
at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass(ClassRealm.java:271)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:247)
at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass(ClassRealm.java:239)
... 1 more
这是我的POM.xml配置:

    <build>
  <plugins>
    <plugin>
      <groupId>org.apache.tomcat.maven</groupId>
      <artifactId>tomcat7-maven-plugin</artifactId>
      <version>${tomcat-maven-plugin.version}</version>
      <configuration>
        <port>8080</port>
        <path>/ppc-v2.webapp</path>
      </configuration>
      <dependencies>
        <dependency>
          <groupId>upgrade.karavel.framework</groupId>
          <artifactId>framework.integration.camel.extension</artifactId>
          <version>${framework.camel.extension.version}</version>
          <exclusions>
            <exclusion>
              <groupId>org.apache.geronimo.specs</groupId>
              <artifactId>geronimo-servlet_2.5_spec</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
        <dependency>
          <groupId>upgrade.karavel.framework</groupId>
          <artifactId>framework.frontend.web</artifactId>
          <version>${framework.frontend.web.version}</version>
          <exclusions>
            <exclusion>
              <groupId>org.springframework.webflow</groupId>
              <artifactId>spring-webflow</artifactId>
            </exclusion>
            <exclusion>
              <groupId>javax.servlet</groupId>
              <artifactId>servlet-api</artifactId>
            </exclusion>
          </exclusions>
        </dependency>
      </dependencies>
    </plugin>
  </plugins>
</build>

org.apache.tomcat.maven
tomcat7 maven插件
${tomcat maven plugin.version}
8080
/ppc-v2.webapp
upgrade.karavel.framework
framework.integration.camel.extension
${framework.camel.extension.version}
org.apache.geronimo.specs
geronimo-servlet_2.5_规范
upgrade.karavel.framework
framework.frontend.web
${framework.frontend.web.version}
org.springframework.webflow
SpringWebFlow
javax.servlet
servlet api
编辑:我在日志顶部有以下堆栈跟踪:

GRAVE:启动期间子容器失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:未能启动组件[StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/ppc-v2.webapp]] 位于java.util.concurrent.FutureTask.report(FutureTask.java:122) 位于java.util.concurrent.FutureTask.get(FutureTask.java:192) 位于org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 位于org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:800) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 位于org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 运行(Thread.java:748) 原因:org.apache.catalina.LifecycleException:无法启动组件[StandardEngine[Tomcat].StandardHost[localhost].StandardContext[/ppc-v2.webapp]] 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ... 还有6个 原因:java.lang.ClassCastException:org.springframework.web.SpringServletContainerInitializer无法转换为javax.servlet.ServletContainerInitializer 位于org.apache.catalina.startup.ContextConfig.getServletContainerInitializer(ContextConfig.java:1670) 位于org.apache.catalina.startup.ContextConfig.getServletContainerInitializers(ContextConfig.java:1652) 位于org.apache.catalina.startup.ContextConfig.processServletContainerInitializers(ContextConfig.java:1562) 位于org.apache.catalina.startup.ContextConfig.webConfig(ContextConfig.java:1270) 位于org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:878) 位于org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) 在org.apache.catalina.util.LifecycleSupport.FireLifecycleSupport(LifecycleSupport.java:119)上 位于org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90) 位于org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5322) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ... 还有6个 2018年9月3日12:34:07 PM org.apache.catalina.core.ContainerBase startInternal GRAVE:启动期间子容器失败 java.util.concurrent.ExecutionException:org.apache.catalina.LifecycleException:无法启动组件[StandardEngine[Tomcat].StandardHost[localhost]] 位于java.util.concurrent.FutureTask.report(FutureTask.java:122) 位于java.util.concurrent.FutureTask.get(FutureTask.java:192) 位于org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1123) 位于org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:302) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 位于org.apache.catalina.core.StandardService.startInternal(StandardService.java:443) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 位于org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:732) 位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 位于org.apache.catalina.startup.Tomcat.start(Tomcat.java:341) 位于org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.startContainer(AbstractRunMojo.java:1238) 位于org.apache.tomcat.maven.plugin.tomcat7.run.AbstractRunMojo.execute(AbstractRunMojo.java:592) 位于org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 位于org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 位于org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 位于org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 位于org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:120) 在org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:347) 位于org.apache.maven.DefaultMaven.execute(DefaultMaven.java:154) 在或
<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>
C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib