gpt4 book ai didi

java - 贾斯珀异常 : Absolute uri cannot be resolved

转载 作者:行者123 更新时间:2023-11-30 07:38:30 24 4
gpt4 key购买 nike

当我尝试对 web.xml 使用 XML 架构而不是已弃用的 DOCTYPE 声明时,我收到了以下 JasperException:

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

如果我使用此 web.xml,应用程序将编译:

<!DOCTYPE web-app PUBLIC 
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
<display-name>Archetype Created Web Application</display-name>
</web-app>

但是,如果我使用这个 web.xml,我会得到 JasperException:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1">
<display-name>CourseManagementJDBC</display-name>\
</web-app>

知道为什么只有已弃用的格式才有效吗?

注意:这是一个Maven项目,并且JSTL依赖已经正确声明,以及JSP中的标签库:

pom.xml:

<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>

JSP:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

他们都是正确的;什么给出?

最佳答案

我终于找到了解决方案。默认情况下,出于某种原因(我想知道为什么),Maven 生成版本为 2.3 的动态 Web 模块。 DTD 当然是 Servlet 2.3 的标准,并且可能无法解析或评估我的基于 XML 的 web.xml 文件。

我仍然不是 100% 清楚为什么将 web.xml 更改为 XSD 会导致 JSTL 的 JasperException,尽管我认为这与 JSTL 与 JSP 集成有关Servlet 2.3 之后的某个点 - 如果可能的话,请有人纠正或详细说明这一点。

请参阅:https://stackoverflow.com/a/4928309/2879303

现在给出解决方案:

  1. 右键单击您的 Maven 项目并选择属性

  2. 导航到 Project Facets 并取消选中动态 Web 模块。申请变化。

  3. 从版本下拉框中选择最新版本(截至写作,这是3.1)。重新选择动态Web模块。应用更改。

  4. 右键单击您的 Maven 项目并选择 Maven -> 更新项目

  5. 您的项目现在应该能够正确解释 web.xml带有 XSD 声明。

关于java - 贾斯珀异常 : Absolute uri cannot be resolved,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35034677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com