Intellij-IDEA运行web项目异常

探讨IntelliJ IDEA部署Web项目时遇到的web.xml解析错误,详细分析了jsp显示异常的原因,提供了检查和解决缺失jar包的方法,以及如何在tomcat配置中调整设置以解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

titletoclayoutcategoriestagsdate
Intellij IDEA 部署 Web 项目时,web.xml 无法正常解析导致 jsp 显示错误
false
blog
blog
Intellij IDEA
2019-02-28 03:00:13 -0800

{{title}}

Intellij IDEA 部署 Web 项目时,web.xml 无法正常解析导致 jsp 显示错误

错误信息

Intellij IDEA 控制台信息

 java.io.FileNotFoundException: Could not resolve XML resource [null] with public ID [-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN], system ID [http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd] and base URI [jar:file:/D:/Code/IDE-workspace/iptvView/target/WEB-INF/lib/standard-1.1.2.jar!/META-INF/c-1_0-rt.tld] to a known, local entity.
	at org.apache.tomcat.util.descriptor.LocalResolver.resolveEntity(LocalResolver.java:155)

Chrome 浏览器页面信息

HTTP Status 500 - 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
type Exception report

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

description The server encountered an internal error that prevented it from fulfilling this request.

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
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:55)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:277)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:75)
	org.apache.jasper.compiler.TagLibraryInfoImpl.generateTldResourcePath(TagLibraryInfoImpl.java:250)
	org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:125)
	org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:421)
	org.apache.jasper.compiler.Parser.parseDirective(Parser.java:479)
	org.apache.jasper.compiler.Parser.parseElements(Parser.java:1435)
	org.apache.jasper.compiler.Parser.parse(Parser.java:139)
	org.apache.jasper.compiler.ParserController.doParse(ParserController.java:227)
	org.apache.jasper.compiler.ParserController.parse(ParserController.java:100)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:201)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:358)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:338)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:325)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:580)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:363)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:396)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:340)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
	org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:263)
	org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1208)
	org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:992)
	org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:939)
	org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)
	org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:936)
	org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:827)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
	org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:812)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.52 logs.

Apache Tomcat/8.0.52
  1. 项目 xxx/WEB-INF/lib 中不存在相关jar包;

可以从 mavenrepository地址 中找到相应jar包,添加相关依赖到pom.xml文件中并重新编译,查看问题是否解决。

注: 通过添加缺失jar可以解决的就不用往下看了

  1. 项目依赖中存在相关依赖,依然无法正常显示页面
  1. 找到项目配置的 tomcatxx\apache-tomcat-8.0.52\conf\context.xml文件
  1. 修改文件,添加如下内容

<Context xmlBlockExternal="false" >

注: 只需要添加下划线中的 xmlBlockExternal="false"Context 标签即可

总结:

  1. 出现jsp页面显示错误,一般都是缺少 jar 包所致。可检查在tomcat或编译后的文件夹中是否能够找到相关依赖。
  2. 上述异常中缺失的jar有,然而本次并不是缺少jar的错误
standard-1.1.2.jar、jstl-1.2.jar、jersey-server-1.9.jar、jstl-impl.jar
  1. 本博客无法解决疑问时,可简练相关关键字再搜索。

参考博客 新版Tomcat无法解析web.xml

### 解决 IDEA运行 Web 项目时出现的中文乱码问题 #### 设置文件编码格式 确保所有涉及的文件(HTML、JSP、Servlet等)均采用UTF-8编码保存。可以在IntelliJ IDEA中全局设置默认编码为UTF-8,这样可以避免因不同文件间编码不一致而引发的问题[^1]。 ```java // 在项目web.xml配置文件里加入如下代码片段指定字符集 <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ``` #### 修改数据库连接URL中的参数 当涉及到与MySQL或其他关系型数据库交互时,在数据源配置处添加`useUnicode=true&characterEncoding=UTF-8`属性到jdbc url字符串后面,从而强制客户端和服务端之间通信使用统一的字符编码方式[^2]。 #### 调整IDEA内部编译器选项 进入File -> Settings (Ctrl+Alt+S),依次展开Build, Execution, Deployment -> Compiler -> Java Compiler,勾选"Pass file encoding from command line to javac"并确认当前使用的编码标准是UTF-8[^3]。 #### 清除浏览器缓存重试 即使完成了上述调整之后仍然存在显示异常,则可能是之前加载过的错误版本被浏览器缓存下来了。此时应该彻底清理一次浏览记录后再尝试访问受影响网页,防止旧版资源干扰新改动的效果呈现[^4]。 #### Tomcat服务器配置优化 对于基于Tomcat部署的应用程序来说,还需要编辑conf目录下的server.xml文件,在Connector节点内增加URIEncoding="UTF-8"属性声明,使得请求路径解析也能遵循相同的编码规则[^5]。 ```xml <!-- server.xml --> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值