2016-01-27 92 views
1

試圖使用XML模式爲我的web.xml,而不是過時的DOCTYPE聲明時,我已經收到以下JasperException:JasperException:絕對URI不能得到解決

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 

如果我使用這個網絡。 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" %> 

他們是正確的;是什麼賦予了?

+0

您是否在編譯時或運行時訪問jsp頁面時發生錯誤? –

+0

在編譯時。它成功編譯的唯一方法是在Web中使用舊的,不贊成使用的DOCTYPE聲明。 XML。我只是不知道爲什麼。 – Vordhosbn

回答

0

我終於找到了解決方案。默認情況下,出於某種原因(我想知道爲什麼),Maven生成2.3版的動態Web模塊。 DTD當然是Servlet 2.3的標準,可能無法解析或評估我的基於XML的web.xml文件。

我仍然沒有100%清楚爲什麼將web.xml更改爲XSD導致JasperException與JSTL有關,儘管我認爲它與JSTL在Servlet 2.3之後的某些時候與JSP集成有關 - 請某人如果可能,請更正或詳細說明。

看到這個:https://stackoverflow.com/a/4928309/2879303

現在的解決方案:

  1. 在你的Maven項目上右鍵單擊並選擇屬性

  2. 導航到項目構面的勾去掉動態Web模塊。應用 更改。

  3. 從版本下拉框中選擇最新版本(從 開始,這是3.1)。重新選擇動態Web模塊。應用更改。在你的Maven項目

  4. 右鍵單擊並選擇的Maven - >更新 項目

  5. 您的項目現在應該能夠正確解釋帶有XSD聲明的web.xml

相關問題