Java IntelliJ和JSP/JSTL无法解析tomcat7中JSTL的标记库

Java IntelliJ和JSP/JSTL无法解析tomcat7中JSTL的标记库,java,jsp,tomcat,intellij-idea,jstl,Java,Jsp,Tomcat,Intellij Idea,Jstl,首先,我的JSTl代码在我的服务器上工作,因为我在tomcat7的Lib文件夹中有正确的Jar文件。这真的是一个思想问题。我的问题归结为我将同一个jar文件放在IntelliJ的文件目录中的什么位置 我在IntelliJ和JSTL中遇到了一个错误 我的问题是当我使用 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 它导致无法解析具有uri的标记库。我尝试了不同的Jar文件,我知道我必须为我的ser

首先,我的JSTl代码在我的服务器上工作,因为我在tomcat7的Lib文件夹中有正确的Jar文件。这真的是一个思想问题。我的问题归结为我将同一个jar文件放在IntelliJ的文件目录中的什么位置

我在IntelliJ和JSTL中遇到了一个错误

我的问题是当我使用

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

它导致无法解析具有uri的标记库。我尝试了不同的Jar文件,我知道我必须为我的servlet修改版本

我在Ubuntu服务器15.04和Intellij14.1.3上运行tomcat7

我曾尝试通过项目结构导入jar文件,并将其包含在不同的位置,但在重新构建项目、关闭并重新打开IDEA后仍然出现相同的错误

此示例代码在部署到tomcat时运行,但IntelliJ不断给出错误

<table border="1">
    <c:forEach var="a" items="${data}">
        <tr>
            <td>${a}</td>
        </tr>
    </c:forEach>
</table>

<c:forEach begin="0" end="255" var="i">
    <span style='color:rgb(
        <c:out value="${i}"/>,
        <c:out value="${i}"/>,
        <c:out value="${i}"/>);'>
        <c:out value="${i}"/></span> <br />
</c:forEach>

${a}

我想知道如何阻止IntelliJ在我的语法上给出错误,即使代码正常工作

我读过


仍然不走运。

首先将此添加到
.jsp
文件的顶部:

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

它仍然会给出语法错误,但您可以通过添加
javax.servlet:jstl:1.2
作为模块依赖项来修复这个错误。为此,请执行以下步骤:

  • 单击项目名称并按F4键以打开“模块设置”对话框
  • 然后转到
    模块
    部分的
    依赖项
    选项卡
  • 单击绿色的
    +
    图标
    来自Maven
  • 在搜索栏中搜索
    javax.servlet:jstl:1.2
    ,然后按OK,它将下载并添加上述库作为一个模块
  • 现在您不应该有任何语法错误

  • 如果您使用的是maven,请在pom.xml中的
    标记中添加以下代码

    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    
    
    javax.servlet
    jstl
    1.2
    
    如果在遵循Shams UI Azeem提供的说明后仍然出现错误,则可能需要将JSTL库添加到WAR分解工件中。为此:

  • 转到项目结构。在“项目设置”下,选择“工件”。在菜单框的底部,可能有一条消息提到所使用的JSTL库不包括在WAR中
  • 2a。消息可见。如果显示该消息,则该消息旁边应该有一个修复按钮。单击此修复按钮。选择“向工件添加
    javax.servlet:jstl:1.2

    2b。消息不可见。如果消息未显示,则查看上面的可用元素列下面是否有
    javax.servet:jstl:1.2(项目库)
    。如果是,右键单击它并选择“放入/WEB-INF/lib”


    如果您正在使用Maven,修复消息将不会出现,尽管您仍然需要这样做。

    根据Maven存储库,javax.servlet:jstl已移动到javax.servlet.jsp.jstl,但是后者并没有修复URI解析问题


    添加旧的javax.servlet:jstl依赖项解决了这个问题。

    @ShamsUIAzeem在添加它之后为我提供了
    绝对uri:http://java.sun.com/jsp/jstl/core 无法在web.xml或与此应用程序一起部署的jar文件中解析
    如何在添加依赖项的情况下修复它
    javax.servlet:jstl:1.2
    不起作用。添加依赖项
    jstl:jstl:1.2
    有效。谢谢!我决定在我的案例中添加
    runtime