Http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml file or jar files deployed with this app
I am new to jsp web development and debugging my application to read the database gives the following error:
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
I researched the internet on several sites for this problem for so long that I couldn't fix anything. These are my specs:
IDE: eclipse / JSP version: 2.0 / Servlet version: 2.4 / JSTL version: 1.1.1 / Tomcat version: 7.0.35 /
This is my WEB-INF / web.xml file
<?xml version="1.0" encoding="UTF-8" ?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-app_2_4.xsd"
version="2.4">
<resource-ref>
<description>Resource configuration for database connection</description>
<res-ref-name>jdbc/TestDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
This is my META-INF / context.xml file
<?xml version="1.0" encoding="UTF-8" ?>
<Context>
<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
maxActive="100" maxIdle="30" maxWait="10000"
username="admin" password="admin" driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost:3306/checklist_pdnf"/>
</Context>
And this is my jsp file
<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
<sql:query var="db" dataSource="jdbs/TestDB">
select * from patient
</sql:query>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<div>
<table>
<c:forEach var="row" items="${db.rows}">
<tr>
<td>row.getString("patient_medicalRecordNumber")</td>
<td>row.getString("patient_lastName")</td>
<td>row.getString("patient_firstName")</td>
<td>row.getString("patient_middleName")</td>
<td>row.getString("patient_dateOfBirth")</td>
<td>row.getString("patient_gender")</td>
<td>row.getString("patient_admissionDateTime")</td>
<td>row.getString("patient_dischargeDateTime")</td>
<td>row.getString("patient_attendingPhysician")</td>
<td>row.getString("patient_locationRoom")</td>
</tr>
</c:forEach>
</table>
</div>
</body>
</html>
It turns out my JSP version was actually 2.2, I remember opening a page in Eclipse to be able to get this information, but couldn't find it for an answer. However, I'll update this answer if necessary.
Libraries used:
(1) javax.servlet.jsp.jstl-1.2.1.jar
(2) javax.servlet.jsp.jstl-api-1.2.1.jar
(3) javax.servlet-api-3.0.1.jar
(4) mysql-connector-java-5.1.23-bin.jar
pom.xml links to http://java.net/projects/jsp/sources/svn/content/trunk/impl/pom.xml?rev=1440
Dependency Versions:
a) javax.servlet-api 3.1. (b) javax.el-api 2.2.1. (c) javax.servlet.jsp-api 1.2.1 (d) javax.servlet.jsp.jstl-api 1.2.1. (e) jstl 1.2. (f) jstl-imp 1.2.
Link in web.xml:
`<web-app
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> `
According to this link, have you followed the following instruction?
This JSP page uses JSTL SQL tags and Core taglib. You can get it from Apache Tomcat Taglibs - the standard tag library project - just make sure you get version 1.1.x or later. Once you have the JSTL, copy the jstl.jar and standard.jar to your WEB-INF / lib directory.