java - 加载或实例化 TagLibraryValidator 失败

标签 java maven jsp tomcat jstl

我正在尝试在 Tomcat 上部署一个 war 文件,但每次我尝试运行它时,我都会收到一个错误:

java.lang.ClassNotFoundException: org.apache.taglibs.standard.tlv.JstlCoreTLV
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1365)
org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1188)
org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:348)
org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:195)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:431)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:489)
org.apache.jasper.compiler.Parser.parseElements(Parser.java:1445)
org.apache.jasper.compiler.Parser.parse(Parser.java:144)
org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:206)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:385)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:362)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:346)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:603)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:399)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)

我可以看到它缺少 JSTL 库,但我确实已将它添加到我的 pom 文件中。我的依赖项是:

<!-- https://mvnrepository.com/artifact/org.apache.activemq/activemq-core -->
    <dependency>
        <groupId>org.apache.activemq</groupId>
        <artifactId>activemq-core</artifactId>
        <version>5.7.0</version>
    </dependency>

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

    <!-- https://mvnrepository.com/artifact/javax/javaee-api -->
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-api</artifactId>
        <version>8.0.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>4.0.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.jdom/jdom -->
    <dependency>
        <groupId>org.jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>2.0.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-server -->
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>9.4.19.v20190610</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-servlet -->
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>9.4.19.v20190610</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.eclipse.jetty/jetty-util -->
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-util</artifactId>
        <version>9.4.19.v20190610</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl -->
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.apache.servicemix/servicemix -->
    <dependency>
        <groupId>org.apache.servicemix</groupId>
        <artifactId>servicemix</artifactId>
        <version>7.0.1</version>
        <type>pom</type>
    </dependency>

我查看了有关堆栈溢出的其他一些线程并复制了答案,但它们没有帮助。我是否缺少一些额外的依赖项?从错误看来确实如此。但是不能说。我正在使用 Servlet 4.0 和 Tomcat 9.0.22。

最佳答案

不确定它是否正确,但我能够通过将 jSTL.jar 复制到 Tomcat/lib 文件夹并从 pom 文件中删除依赖项来让它工作。

关于java - 加载或实例化 TagLibraryValidator 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57412361/

相关文章:

java - 在 Java 中向数组添加项目

java - 通过 PDFBox 从 PDF 文件中提取时具有黑色背景(或全白)的 Jpg

java - Eclipse 中新的 java-maven 项目的 “Update dependencies” 中缺少 "Update Maven Project"选项

java - 如何从远程存储库下载 Maven Artifact 到本地文件夹?

java - 为什么Tomcat/JSP看不到这些类?

java - 使用jsp和servlet显示来自mysql的数据

java - Servlet - 将响应导出到 Excel 文件

java - 如何在 Gradle 中支持多种语言(Java 和 Scala)的多个项目?

java - elasticsearch lib不能同时添加commons-beanutils和commons-collections

java - 为 aspectj 运行 JDK8