0

我想使用一个embedded tomcat而不是独立版本来启动一个 Web 应用程序。为了做到这一点,我在我的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>

编辑:我在日志顶部有以下堆栈跟踪:

第1652章.configureStart(ContextConfig.java:878) at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:376) at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119) at 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) ... 9 月 6 日。2018 年 3 月 3 日下午 12:34:07 org.apache.catalina.core.ContainerBase startInternal GRAVE:

4

2 回答 2

0

谢谢大家,但你无法解决我的问题:D 我注意到我仍然使用 jetty 插件,并且名为 jetty-jndi 的依赖项之一,其中包括 servlet-api 与嵌入式 tomcat 的 servlet-api 发生冲突。由于某些未知原因,我在 Maven 依赖项中看不到这个 jar:Eclipse 的树。

这就是我收到此错误的原因。

谢谢大家。

此致

于 2018-09-03T13:02:13.840 回答
0

您可以通过在 pom.xml 中添加此依赖项来包含 Apache commons-io jar

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

如果您想在 tomcat lib 中添加 jar 文件,您可以做的就是从https://commons.apache.org/proper/commons-io/download_io.cgi下载 jar 文件 并转到安装 tomcat 的位置并转到lib文件夹并复制粘贴jar。就我而言,我的位置是

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

您可以类似地签入本地系统。

于 2018-09-03T10:44:17.277 回答