Запустите приложение при использовании Tomcat Embedded с Maven - PullRequest
0 голосов
/ 03 сентября 2018

Я бы хотел запустить веб-приложение, используя embedded tomcat вместо автономной версии. Чтобы сделать это, я объявил плагин tomcat maven в моем pom.xml. Когда я попытался запустить это, я получил эту ошибку:

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>

РЕДАКТИРОВАТЬ: У меня есть следующая трассировка стека в верхней части журнала:

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) на java.lang.Thread.run (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.fireLifecycleEvent (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 Сентябре 03, 2018 12:34:07 вечера 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) в org.apache.maven.cli.MavenCli.execute (MavenCli.java:582) в org.apache.maven.cli.MavenCli.doMain (MavenCli.java:214) в org.apache.maven.cli.MavenCli.main (MavenCli.java:158) at sun.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) в java.lang.reflect.Method.invoke (Method.java:498) в org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289) в org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229) в org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415) в org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356) Вызвано: org.apache.catalina.LifecycleException: не удалось запустить компонент [StandardEngine [Tomcat] .StandardHost [localhost]] в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:154) в 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) на java.lang.Thread.run (Thread.java:748) Вызвано: org.apache.catalina.LifecycleException: дочерний контейнер не удалось во время запуска в org.apache.catalina.core.ContainerBase.startInternal (ContainerBase.java:1131) в org.apache.catalina.core.StandardHost.startInternal (StandardHost.java:800) в org.apache.catalina.util.LifecycleBase.start (LifecycleBase.java:150) ... еще 6

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Спасибо всем, но вы не можете решить мои проблемы: D Я заметил, что все еще использую плагин jetty, и одна из зависимостей с именем jetty-jndi, которая включает servlet-api, конфликтует с servlet-api встроенного tomcat. По какой-то неизвестной причине я не смог увидеть эту банку в зависимости maven: tree of Eclipse.

Вот причина, по которой я получил эту ошибку.

Спасибо всем.

С наилучшими пожеланиями

0 голосов
/ 03 сентября 2018

Вы можете включить Apache commons-io jar, добавив эту зависимость в pom.xml

<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.4</version>
</dependency>

Если вы хотите добавить файл jar в tomcat lib, все, что вы можете сделать, это загрузить файл jar из https://commons.apache.org/proper/commons-io/download_io.cgi и перейдите в папку, где вы установили tomcat, перейдите в папку lib и скопируйте и вставьте банку. В моем случае мое местоположение

C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib

Вы также можете проверить свою локальную систему.

...