2015-09-13 88 views
2

我幾乎已經閱讀了關於SO的這個問題的所有答案,並嘗試了十多種不同的「解決方案」,但我無法讓JSTL在Spring啓動Web應用程序中使用Tomcat 8.0中的servlet 3.1。我不斷收到此錯誤:無法使用Servlet 3.1與JSTL 1.2一起獲取Tomcat 8.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. 

我使用Maven構建項目,但也有手動,希望複製JAR文件以及這將有助於但很可惜,它不是!我希望我只是忽略了一些愚蠢的東西。有人能告訴我我做錯了什麼嗎?

事情我已經嘗試了(對於所​​有這些,這是一個簡單的index.jsp文件所包含的行 -

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
  1. 添加以下的依賴,以我的pom.xml(XML字符刪除格式化更好)

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

    這使JSTL-1.2.jar在我的WEB-INF/lib目錄下,我已經證實了它的存在,當我部署到Tomcat - 這不起作用

  2. 刪除了上述的依賴並增加每這裏的建議(http://www.murraywilliams.com/2011/11/running-jstl-1-2-on-tomcat-7-using-maven/

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

    這使得兩個附加的JAR文件在我的WEB-INF/lib目錄下,A JSTL-API-1.2.jar和jstl-impl-1.2.jar,我已經確認他們在那裏時,我部署到雄貓 - 這是行不通的

  3. 我也試着改變範圍'提供'爲每個這些依賴項,同時放置Tomcat的lib目錄中的相應JAR以及重新啓動的Tomcat仍然不起作用。

這裏是我的web.xml頭

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

不管怎麼說,任何幫助是非常感謝!

+0

您是否暗示它在您不使用Spring Boot時正常工作? – BalusC

+0

不,但我知道Spring Boot在幕後做了很多東西,我覺得像提到它的使用可能是相關的。雖然我在我的項目上運行了一個依賴關係樹,但沒有看到其他JAR牽扯到衝突的JSTL JAR。 –

+0

我不想發佈這個問題的答案,因爲它沒有真正回答實際問題,但我決定使用Thymeleaf來處理視圖而不是JSP。只有一個小的學習曲線,它與Spring 4(和Spring Boot)很好地結合在一起。我會鼓勵其他人進行轉換! –

回答

-1

你不應該使用範圍爲提供,因爲Tomcat不JSTL庫

+0

這就是爲什麼我說我把JAR放在Tomcat的lib目錄中...... –

-1

我想你只需要從javax.servlet.jsp.jstl更改組ID的javax.servlet爲如下所示。

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

有人可能會給出評論爲什麼這個答覆給出了負面的觀點嗎?鑑於問題通過這種方法得到了解決,因此我認爲應該爲負面標記提供一個有效的理由。 – lkamal