本文介绍了在Tomcat Maven项目中出错&找不到";https://java.sun.com/jsp/jstl/core";的标记库描述符的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我用Eclipse版本2021-03创建了一个简单的Maven Web项目,部署到Tomcat 9上,包含以下pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.gillopez.web.jstl</groupId>
<artifactId>jstl-webapp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<dependencies>
<dependency>
<groupId>jakarta.platform</groupId>
<artifactId>jakarta.jakartaee-web-api</artifactId>
<version>8.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>
<build>
<finalName>jstl-webapp</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.3.1</version>
</plugin>
</plugins>
</build>
</project>
我创建了一个简单的JSP,其中包含核心JSTL标记的taglib指令:
<%@page import="java.time.LocalDateTime"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<body>
<c:set var="stuff" value="<%= LocalDateTime.now() %>" />
Time on server is ${stuff}
</body>
</html>
但是,我在JSP编辑器中看到以下错误消息:
Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"
如果我在服务器上运行它,我会收到以下错误:绝对URI:[无法在与此应用程序一起部署的Web.xml或JAR文件中解析http://java.sun.com/jsp/jstl/core]&q;JSTL包包含在jakarta.jakartaee-web-api-8.0.0.jar:
为什么我收到此错误消息?
我可以通过在pom.xml中添加以下依赖项来使其正常工作。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
如果jakarta.jakartaee-web-API JAR文件中已经包含JSTL包,为什么需要执行此操作?
APIAPI
工件jakarta.jakartaee-web-api
只包含Jakarta EE 8的推荐答案JAR,不包含实现。由于您使用了provided
作用域,因此假定容器将提供实现。
jakarta.jakartaee-web-api
替换为: <dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>4.0.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.servlet.jsp</groupId>
<artifactId>jakarta.servlet.jsp-api</artifactId>
<version>2.3.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.el</groupId>
<artifactId>jakarta.el-api</artifactId>
<version>3.0.3</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.websocket</groupId>
<artifactId>jakarta.websocket-api</artifactId>
<version>1.1.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>jakarta.security.auth.message</groupId>
<artifactId>jakarta.security.auth.message-api</artifactId>
<version>1.1.3</version>
<scope>provided</scope>
</dependency>
您要使用的所有其他API必须由您的应用程序及其实现提供。
这篇关于在Tomcat Maven项目中出错&找不到";https://java.sun.com/jsp/jstl/core";的标记库描述符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!