web开发错误处理:HTTP Status 500 – Internal Server Error(3)

操作系统:MacOS 10.15
开发环境:eclipse 2019-06 (4.12.0)+maven3.5.4+tomcat7.0.90

问题描述

Message: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



Exception: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

出错原因

在引用C标签<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>时无法解析http://java.sun.com/jsp/jstl/core,原因是没有导入jstl的实现

解决办法

1.简单粗暴添加taglibs-standard-impl.jar/taglibs-standard-impl.jar+taglibs-standard-spec
2.使用maven的话,添加(需要版本对应)——我自己的办法

<dependency>
			<groupId>org.apache.taglibs</groupId>
			<artifactId>taglibs-standard-impl</artifactId>
			<version>1.2.5</version>
</dependency>
<!-- 我没有加也可以运行了-->
<dependency>
	<groupId>org.apache.taglibs</groupId>
	<artifactId>taglibs-standard-spec</artifactId>
	<version>1.2.5</version>
</dependency>

3.基于2的进一步精确:由于tomcat7是兼容j2ee 3.0规范的,所以我们将jstl 依赖的东西给去除掉,防止和tomcat自身的servlet jar包冲突,改正后的依赖为

<dependency>
            <groupId>javax.servlet.jsp.jstl</groupId>
            <artifactId>jstl-api</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
 
        <dependency>
            <groupId>org.glassfish.web</groupId>
            <artifactId>jstl-impl</artifactId>
            <version>1.2</version>
            <exclusions>
                <exclusion>
                    <groupId>javax.servlet</groupId>
                    <artifactId>servlet-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp</groupId>
                    <artifactId>jsp-api</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>javax.servlet.jsp.jstl</groupId>
                    <artifactId>jstl-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

4.更新:当仅仅添加taglibs-standard-impl的时候,将会报错,具体为

Message:javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag



Exception:org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/LoopTag

此时还是需要添加taglibs-standard-spec.jar,具体在pom.xml中添加

		<dependency>
			<groupId>org.apache.taglibs</groupId>
			<artifactId>taglibs-standard-spec</artifactId>
			<version>1.2.5</version>
		</dependency>

感谢/参考文档

以下链接也有解决办法,但我没用到/测试
http://stackoverflow.com/questions/6094329/tomcat-7-and-jstl/25374024
http://stackoverflow.com/questions/6094329/tomcat-7-and-jstl/25374024
http://www.murraywilliams.com/2011/11/running-jstl-1-2-on-tomcat-7-using-maven/

发布了20 篇原创文章 · 获赞 13 · 访问量 9124

猜你喜欢

转载自blog.csdn.net/weixin_38322326/article/details/100564348
今日推荐