【问题标题】:Why is it required to have jstl.jar in WEB-INF/lib in Maven project?为什么需要在 Maven 项目的 WEB-INF/lib 中有 jstl.jar?
【发布时间】:2013-11-24 11:13:33
【问题描述】:

我有一个 Maven 网络项目,我在 pom.xml

中添加了 JSTL 依赖项
<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

.jsp 文件中,我的taglib 如下

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

但是,eclipse 在那一行显示错误

找不到“http://java.sun.com/jsp/jstl/core”的标签库描述符

但是当我在WEB-INF/lib 中包含jstl.jar 时,eclipse 不会显示这样的错误。

我的问题是,

为什么我需要在 WEB-INF/lib 文件夹中包含 jstl.jar,即使 JSTL 包含在 Maven 依赖项中?

【问题讨论】:

    标签: jsp maven jstl


    【解决方案1】:

    有时由于网络连接不良,您的依赖 jar 文件没有正确下载。 在进行 maven 项目之前,请确保您有良好的互联网连接。

    解决方案 1:右键单击您的项目,转到属性 -> Java 构建路径 -> 选中“Maven 依赖项”,您必须有红十字标志。 这意味着您的 jar 在特定路径上丢失。因此您必须通过更新项目来解决(或手动下载文件并粘贴到丢失的路径中) 你的问题解决了。

    解决方案 2:在使用 maven projet 之前,请检查您的互联网连接。

    【讨论】:

      【解决方案2】:

      JSTL主要用于标签,只在JSP中使用。虽然不需要编译,但 javac 在编译时不会打扰 JSP 文件。

      但是,当jsp执行时,JSP会被转换成Java文件,在容器使用之前会被编译。这样做时,它需要 JSTL.jar 来将 JSP 标记转换为正确的 java 代码,这就是为什么编译时不需要 JSTL.jar,但在运行应用程序时需要。希望对你有帮助!!!。

      您可以将依赖范围设置为运行时。 maven 会将 jar 包含到 lib 中。

      【讨论】:

        【解决方案3】:

        这不是必需的。在 eclipse 中重新加载你的 maven 项目。

        使用 'mvn package` 打包此项目后,检查 jstl.jar 是否在 WAR 中。

        【讨论】:

          猜你喜欢
          • 2015-10-23
          • 2011-08-30
          • 2010-11-29
          • 1970-01-01
          • 1970-01-01
          • 2014-11-24
          • 2018-02-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多