一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core

这里写目录标题

    • 场景
    • 升级步骤
    • 出现的问题
    • 问题的解决
    • 反思

场景

有个项目用的jeesite 1.0进行的开发,由于服务器要求JDK使用1.8的,而jeesite是JDK 1.7的,所以进行一下升级,但是升级过程中遇到了一些问题,今天记录一下 Eclipse中Java的Web项目怎么升级为JDK1.8

升级步骤

1.找到Eclipse的项目,在项目上右键》Properties然后跟着箭头操作就行了
一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第1张图片
一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第2张图片
一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第3张图片
一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第4张图片
一般情况这样设置完等待校验完成就没什么事了,但是我的项目在启动时出现了报错,这个错误让我处理了很久。所以今天记录一下

出现的问题

项目交验完,本以为没问题了,启动项目,也正常启动,可是当我打开页面时,出现了如下错误:

org.apache.jasper.JasperException: /WEB-INF/views/modules/sys/sysLogin.jsp (line: 3, column: 0) 
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
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:291)
	...
	at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:168)
	at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:303)
	at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1243)
	
	...

四月 09, 2020 9:46:27 下午 org.apache.catalina.core.ApplicationDispatcher invoke
严重: Servlet.service() for servlet jsp threw exception

异常关键就是这一句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,但是我查阅很多资料,大概有以下两种说法:

  1. 大部分都说这个可能是没有引入jstl.jar导致的,我检查了一下Ctrl+鼠标点击路径是可以打开的,下图是打开的c.tld文件;
  2. 可能是standard.jar和jstl.jar版本不一致导致的,我在maven中引入的包是standard.1.1.2.jar和jstl.1.2.jar,应该也是没有问题的。
    一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第5张图片

问题的解决

这时候我就找其他原因,一次偶然我把standard.1.1.2.jar放到了lib目录下,项目启动,发现报错换了个文件,这次报错是:

org.apache.jasper.JasperException: /WEB-INF/views/modules/sys/sysLogin.jsp (line: 3, column: 0) 
The absolute uri: http://www.springframework.org/tags/form cannot be resolved in either web.xml or the jar files deployed with this application
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:291)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:97)
	org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:348)
	。。。

这次的错误信息变成了The absolute uri: http://www.springframework.org/tags/form cannot be resolved in either web.xml,所以我猜测是不是maven引的包引用的jstl无法读取呢?于是把spring-webmvc-4.1.9.jar也放到lib包下面,果不其然,换成了另一个错误:

javax.servlet.ServletException: java.lang.RuntimeException: org.apache.jasper.JasperException: The absolute uri: http://www.opensymphony.com/sitemesh/decorator cannot be resolved in either web.xml or the jar files deployed with this application 
    at org.apache.shiro.web.servlet.AdviceFilter.cleanup(AdviceFilter.java:196) 
    at org.apache.shiro.web.filter.authc.AuthenticatingFilter.cleanup(AuthenticatingFilter.java:155) 
    at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:148) 
    

相同的方法,把 sitmesh-2.4.2.jar 包也放到lib目录下,这次项目终于正常启动。调试了两天的问题,终于解决

反思

为什么会出现这个问题呢? 我猜测可能是某种原因导致的Maven引入的jar包中的jstl标签声明文件无法正常引入到项目中去,但是lib目录下的不受影响。
想到之前看到有过好多人在项目里WEB-INF目录下放一个jstl目录,里面都是.tld文件,应该也是读不到jstl文件的声明,导致项目报错。

每天进步一点点!

一次Jeesite升级JDK导致的错误:The absolute uri: http://java.sun.com/jsp/jstl/core_第6张图片
【京东】300减210_百草味 灯影牛肉丝100g 牛肉干肉干肉脯 牛肉类零食小吃 小吃四川风味特产 MJ 五香味,点击在京东购买

你可能感兴趣的:(笔记,java基础,Spring框架)