Jsp 如何安装JSTL?绝对uri:http://java.sun.com/jstl/core 无法解决
我不知道我做错了什么,但我不能包括JSTL。我有jstl-1.2.jar,但不幸的是我得到了异常:Jsp 如何安装JSTL?绝对uri:http://java.sun.com/jstl/core 无法解决,jsp,servlets,jstl,Jsp,Servlets,Jstl,我不知道我做错了什么,但我不能包括JSTL。我有jstl-1.2.jar,但不幸的是我得到了异常: org.apache.jasper.jaspereException:绝对uri:http://java.sun.com/jstl/core 无法在web.xml或与此应用程序一起部署的jar文件中解析 位于org.apache.jasper.compiler.DefaultErrorHandler.jsperor(DefaultErrorHandler.java:51) 位于org.apache
org.apache.jasper.jaspereException:绝对uri:http://java.sun.com/jstl/core 无法在web.xml或与此应用程序一起部署的jar文件中解析
位于org.apache.jasper.compiler.DefaultErrorHandler.jsperor(DefaultErrorHandler.java:51)
位于org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:409)
位于org.apache.jasper.compiler.ErrorDispatcher.jsperor(ErrorDispatcher.java:116)
位于org.apache.jasper.compiler.TagLibraryInfoImpl.generateTLDLocation(TagLibraryInfoImpl.java:315)
位于org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:148)
位于org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:429)
位于org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
位于org.apache.jasper.compiler.Parser.parseElements(Parser.java:1439)
位于org.apache.jasper.compiler.Parser.parse(Parser.java:137)
位于org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
位于org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
位于org.apache.jasper.compiler.compiler.generateJava(compiler.java:170)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:332)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:312)
位于org.apache.jasper.compiler.compiler.compile(compiler.java:299)
位于org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
位于org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
位于org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
位于org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
位于org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
位于org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
位于org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
位于org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
位于org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
位于org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
位于org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
位于org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
位于org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
位于org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
运行(Thread.java:619)
我有:
pom.xml
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>taglibs</groupId> <artifactId>standard</artifactId> <version>1.1.2</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency>
<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_2_5.xsd" version="2.5">
index.jsp
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %> <html> <head></head> <body></body> </html>
/jsp
路径的URI(因为发明EL表达式的JSTL自1.1版起就集成为jsp的一部分,以便在普通jsp中共享/重用EL逻辑)
因此,根据以下内容相应地修复标记库URI:
非Maven用户可以通过将以下两个物理文件放到WEB应用程序项目的/WEB-INF/lib
文件夹中来实现同样的效果(绝对不要将standard*.jar或任何松散的.tld文件放到其中!必要时删除它们)
- (这是EE4J的JSTL 2.0 impl)
- (这是JSTL2.0API)
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>2.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>1.2.6</version>
</dependency>
确保web.xml版本正确
此外,您还应该确保您的web.xml
声明至少符合Servlet2.4,因此不是Servlet2.3或更早版本。否则JSTL标记中的EL表达式将无法工作。选择与目标容器匹配的最高版本,并确保在web.xml
中的任何位置都没有
。下面是一个与Servlet 5.0(Tomcat 10)兼容的示例:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<!-- Config here. -->
</web-app>
<?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>
下面是一个与Servlet 4.0(Tomcat 9)兼容的示例:
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns="https://jakarta.ee/xml/ns/jakartaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
version="5.0">
<!-- Config here. -->
</web-app>
<?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>
另见:
- (对于右侧标记库URI)
- 检查web.xml中的servlet版本:
- 检查此servlet版本是否支持JSTL版本:servlet版本2.5使用JSTL 1.2或servlet版本2.4使用JSTL 1.1
- servlet容器必须具有适当的库,或者必须手动将其包含在应用程序中。例如:JSTL 1.2需要JSTL-1.2.jar 如何使用Tomcat 5或6:
- @BalusC是完全正确的,但如果您仍然遇到此异常,则表示您做错了什么。您将在SO页面上找到最重要的信息
基本上,这是处理此异常所需操作的摘要
jstl-1.2.jar-->
jstl-1.1.jar-->
另外,请检查您添加了javax.servlet.jar
和javax.servl的依赖jar
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jstl-1.2.jar --> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
jstl-1.1.jar --> <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
rightclick on project->Properties->Deployment Assembly->add Maven Dependencies
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<dependency>
<groupId>jakarta.servlet.jsp.jstl</groupId>
<artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
<version>1.2.7</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>jakarta.servlet.jsp.jstl</artifactId>
<version>1.2.6</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId><version>1.2</version>
</dependency>