为什么在Maven项目中需要在WEB-INF / lib中使用jstl.jar?

时间:2013-11-12 10:40:01

标签: jsp maven jstl

我有一个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

的标记库描述符

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

我的问题是,

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

3 个答案:

答案 0 :(得分:1)

有时由于互联网连接不良,您的依赖jar文件未正确下载。 确保在maven项目工作之前你有良好的互联网连接。

Sol no 1:右键单击您的项目,转到属性 - &gt; Java Build Path-&gt;检查“Maven Dependencies”你必须有红十字标志。 这意味着您的jar在特定路径上丢失。因此您必须通过更新项目来解决(或手动下载文件并粘贴到丢失的路径中) 你的问题解决了。

Sol no 2:请在使用maven projet之前检查您的互联网连接。

答案 1 :(得分:0)

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

但是,当jsp正在执行时,JSP将被转换为Java文件,并在容器使用之前进行编译。在执行此操作时,需要JSTL.jar将JSP标记转换为适当的Java代码,这就是编译时不需要JSTL.jar的原因,但在运行应用程序时需要JSTL.jar。希望这可以帮助你!!!。

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

答案 2 :(得分:0)

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

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