首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法解析使用JSP绝对uri http://java.sun.com/jsp/jstl/core的Apache Tomcat10.0.0-m1

无法解析使用JSP绝对uri http://java.sun.com/jsp/jstl/core的Apache Tomcat10.0.0-m1
EN

Stack Overflow用户
提问于 2020-03-02 22:02:45
回答 2查看 1.5K关注 0票数 0

我已经在这个站点的多个线程中尝试了所有的方法(没有一个是针对Tomcat10的,也不是解决问题的。我正在使用ApacheTomcat11.1和ApacheTomcat10.0.0-M1。下面是我的配置--如果从jsp文件中删除taglib行,错误就会消失。

web.xml:

代码语言:javascript
运行
复制
<?xml version="1.0" encoding="UTF-8"?>
<web-app
    xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    version="4.0">

    <!-- Config here. -->

</web-app>

pom.xml依赖关系:

代码语言:javascript
运行
复制
<dependencies>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>8.0.1</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.5</version>
        </dependency>
        <dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20190722</version>
        </dependency>
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>mail</artifactId>
            <version>1.4.7</version>
            <type>jar</type>
        </dependency>
        <dependency>
           <groupId>com.zaxxer</groupId>
           <artifactId>HikariCP</artifactId>
           <version>3.3.1</version>
           <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.10.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
            <!--scope>provided</scope-->
        </dependency>
    </dependencies>

test.jsp

代码语言:javascript
运行
复制
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>

    </head>
    <body>
        <h1>Test Results</h1>
        <testResults></testResults>
    </body>
</html>

显示的错误:

代码语言:javascript
运行
复制
org.apache.jasper.JasperException: The absolute uri: [http://java.sun.com/jsp/jstl/core] cannot be resolved in either web.xml or the jar files deployed with this application
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:294)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:81)
    org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:251)
    org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:122)
    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:386)
    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:605)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:400)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:955)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:128)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)
    jakarta.servlet.http.HttpServlet.service(HttpServlet.java:741)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
EN

回答 2

Stack Overflow用户

发布于 2020-10-14 16:39:43

我发现在Tomcat10上,您可以使用通过Tomcat迁移工具迁移的apache-taglibs 1.2.5和jakarta- jstl -api 2.0,或者使用glassfish jstl实现,这很好用。

代码语言:javascript
运行
复制
<dependency>
    <groupId>org.glassfish.web</groupId>
    <artifactId>jakarta.servlet.jsp.jstl</artifactId>
    <version>2.0.0-M1</version>
</dependency>
票数 1
EN

Stack Overflow用户

发布于 2020-03-03 23:07:39

Apache Tomcat团队通过电子邮件给了我解决方案(谢谢Mark):

来自Tomcat10.0.0-M1发布公告的

Tomcat 10及更高版本的用户应该知道,作为将Java EE转移到Eclipse Foundation的一部分,从Java EE转移到Jakarta EE的结果是,所有实现的API的主包已经从javax.*更改为jakarta.*。这几乎肯定需要更改代码才能使应用程序从Tomcat9和更早版本迁移到Tomcat10和更高版本。

提供的javax javaee-web-api 8.0.1永远不会在Tomact 10上工作。您不能在Jakarta EE 9服务器上使用Java EE 8库。

需要用javax.mail mail替换的Jakarta Mail 1.4.7JAR(在Maven Central上可能有一个RC )

org.springframework spring-Web5.1.10.RELEASE不能工作,据我所知,目前还没有Jakarta EE 9版本可用(甚至还在开发中)。

Jakarta jstl 1.2您需要javax.servlet标准标记库2.0或更高版本。我认为这是雅加达正在努力争取积极提交者的项目之一。

Tomcat 10在示例web应用程序中附带了Jakarta标准标记库2.0的API和实现。它是通过使用JSTL 1.2 JAR并通过Tomcat的Java EE 8到Jakarta EE 9转换/迁移工具运行它们而创建的。

对于你来说,test.jsp坚持使用Tomcat9可能是一个更好的选择?

标记

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60490478

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档