【问题标题】:java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParserjava.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser
【发布时间】:2015-07-24 18:16:14
【问题描述】:

我的应用程序几天前运行良好,但今天执行时出现以下错误:

org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ContestiOpenDataJungle]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) [catalina.jar:7.0.55]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) [catalina.jar:7.0.55]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) [catalina.jar:7.0.55]
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) [catalina.jar:7.0.55]
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) [catalina.jar:7.0.55]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_25]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_25]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]
Caused by: java.lang.NoClassDefFoundError: org/apache/tomcat/util/descriptor/tld/TldParser
    at org.apache.jasper.servlet.TldScanner.<init>(TldScanner.java:86) ~[na:na]
    at org.apache.jasper.servlet.JasperInitializer.newTldScanner(JasperInitializer.java:120) ~[na:na]
    at org.apache.jasper.servlet.JasperInitializer.onStartup(JasperInitializer.java:101) ~[na:na]
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5479) ~[catalina.jar:7.0.55]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) ~[catalina.jar:7.0.55]
    ... 10 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.apache.tomcat.util.descriptor.tld.TldParser
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) ~[catalina.jar:7.0.55]
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) ~[catalina.jar:7.0.55]
    ... 15 common frames omitted
2015-07-24 19:36:41,289 | ERROR | Error deploying web application archive C:\Users\Rosario\Desktop\platform-community-4.1.0\webapps\ContestiOpenDataJungle.war [org.apache.catalina.startup.HostConfig<localhost-startStop-2>] 
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/ContestiOpenDataJungle]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) ~[catalina.jar:7.0.55]
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) ~[catalina.jar:7.0.55]
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) ~[catalina.jar:7.0.55]
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) [catalina.jar:7.0.55]
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [na:1.8.0_25]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [na:1.8.0_25]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [na:1.8.0_25]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [na:1.8.0_25]
    at java.lang.Thread.run(Thread.java:745) [na:1.8.0_25]

我尝试过更换tomcat但没有改变,现在我不知道错误是什么。

【问题讨论】:

  • 与论坛网站不同,我们不会在 Stack Overflow 上使用“谢谢”、“感谢任何帮助”或签名。更多详情见Should 'Hi', 'thanks,' taglines, and salutations be removed from posts?
  • 如果类在编译期间存在但在运行时在类路径中不可用,U 将得到 NoClassDefFoundError。请检查以前在运行时可用的所有 jar 是否仍然可用。它似乎以某种方式被覆盖了。

标签: java spring tomcat


【解决方案1】:

编辑您的 pom 文件并将此类 org/apache/tomcat/util/descriptor/tld/TldParser 的 jar 文件添加到您的 pom 文件中。 看这个链接:add TldParser to pom file

【讨论】:

    【解决方案2】:

    这纯粹是一个依赖问题。你必须使用 dependency:tree 来弄清楚。 它对我有用的方式是解决依赖问题并启用 spring boot 以调试模式 logging.level.org.springframework = debug

    如果您的项目是 spring boot + tld,请关注 tomcat 依赖

    为我的项目附加示例 pom。

    <dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${org.springframework.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-client-hotrod</artifactId>
            </exclusion>
        </exclusions>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <version>${org.springframework.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.infinispan</groupId>
                <artifactId>infinispan-client-hotrod</artifactId>
            </exclusion>
        </exclusions>
        <scope>import</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <version>${org.springframework.boot.version}</version>
        <scope>compile</scope>
        <exclusions>
            <exclusion>
                <groupId>net.minidev</groupId>
                <artifactId>json-smart</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${org.springframework.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
        <version>${org.springframework.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-tomcat</artifactId>
        <version>${org.springframework.boot.version}</version>
        <!-- <scope>provided</scope> -->
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-activemq</artifactId>
        <version>${org.springframework.boot.version}</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tomcat</groupId>
        <artifactId>tomcat-util-scan</artifactId>
        <version>9.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-client</artifactId>
        <scope>provided</scope>
        <version>${activemq.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.xml.bind</groupId>
        <artifactId>jaxb-api</artifactId>
        <version>2.3.0</version>
    </dependency>
    <!-- Need this to compile JSP -->
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-jasper</artifactId>
        <version>9.0.8</version>
        <scope>provided</scope>
    </dependency>
    <!-- Need this to compile JSP -->
    <dependency>
        <groupId>org.eclipse.jdt.core.compiler</groupId>
        <artifactId>ecj</artifactId>
        <version>4.6.1</version>
        <scope>provided</scope>
    </dependency>
    <!-- JSTL -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-core</artifactId>
        <version>3.0.5</version>
        <exclusions>
            <exclusion>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.apache.tiles</groupId>
        <artifactId>tiles-jsp</artifactId>
        <version>3.0.5</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <version>2.3.1.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${hibernate.version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-envers</artifactId>
        <version>${hibernate-envers.version}</version>
    </dependency>
    <!-- <dependency><groupId>org.hibernate</groupId><artifactId>hibernate-c3p0</artifactId><version>${hibernate.version}</version></dependency> -->
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.2.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.infinispan</groupId>
        <artifactId>infinispan-client-hotrod</artifactId>
        <version>${version.org.infinispan}</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.4.1.Final</version>
    </dependency>
    <!-- other project dependency - ends -->
    

    【讨论】:

      猜你喜欢
      • 2015-01-08
      • 1970-01-01
      • 2018-12-16
      • 2015-03-14
      • 2013-10-18
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多