我有一个 Java EE 项目,它使用 Ant 构建得很好,完美地部署到 JBoss,并且运行没有任何问题。这个项目包括几个 风俗 标签库(这不是 JSTL!),它们也可以毫无困难地工作。

问题出在 Eclipse IDE (Ganymede) 上:在每个使用自定义标签的 JSP 文件中,JSP 解析器都会将 taglib include 行标记为以下错误:

Cannot find the tag library descriptor for (example).tld

这也会导致标签库的每次使用都会被标记为错误,并且由于 IDE 没有它们的定义,因此无法检查标签参数等。

我们完美运行的 JSP 文件充满了红色错误,我的眼睛开始灼痛。

我如何简单地告诉 Eclipse,“您正在寻找的标签库描述符是“src/web/WEB-INF/(example)-taglib/(example).tld”?

我已经在 Eclipse 支持论坛上提出了这个问题,但没有得到任何有用的结果。

有帮助吗?

解决方案 4

原来,原因是,这个项目没有被Eclipse的考虑实际上是一个Java EE项目在所有;它是从3.1旧项目,和我们现在使用的是Eclipse 3.5需要几个“本性”的项目配置文件中设置。

<natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
    <nature>InCode.inCodeNature</nature>
    <nature>org.eclipse.dltk.javascript.core.nature</nature>
    <nature>net.sf.eclipsecs.core.CheckstyleNature</nature>
    <nature>org.eclipse.wst.jsdt.core.jsNature</nature>
    <nature>org.eclipse.wst.common.project.facet.core.nature</nature>
    <nature>org.eclipse.wst.common.modulecore.ModuleCoreNature</nature>
    <nature>org.eclipse.jem.workbench.JavaEMFNature</nature>
</natures>

我能够通过创建一个新的“动态Web项目”的正确读出它的JSP文件,版本比较对旧项目的配置,找到病因。

我能找到添加这些是通过编辑项目文件,但重新打开该项目后,唯一的办法,一切都奇迹般地工作。通过pribeiro引用的设置,以上,没有必要的,因为项目已经符合默认设置。

这两个pribeiro和nitind的回答给了我的想法来跳过我的搜索,谢谢。

是否有从UI中编辑这些“性质”的方法吗?

其他提示

在 Eclipse Helios 中,项目属性中的“Java EE 模块依赖项”已替换为“部署程序集”。

因此,为了使用 Eclipse Helios 解决这个问题,我的方法如下:

  • 右键单击包资源管理器中的项目并选择“导入...”
  • 接受默认选择“文件系统”并按“下一步”
  • 在“From”目录行中按“浏览”,转到您的 tomcat 安装并找到文件 webapps/examples/WEB-INF/lib (我有 tomcat 6,其他版本的 Tomcat 可能具有路径 webapps/jsp-examples/WEB- INF/lib)。进入路径后,按“确定”。
  • 单击 jstl.jar 和 standard.jar 旁边的复选框以激活复选框
  • 在“进入文件夹”行中,单击“浏览”并选择库文件夹。我在项目中使用/lib。
  • 点击“完成”
  • 在 Package Explorer 视图中右键单击项目并选择属性(或按 Alt + Enter)
  • 单击“Java 构建路径”
  • 单击“添加 Jar”,单击您的项目,文件夹 lib,选择 jstl.jar,按确定
  • 单击“添加 Jar”,单击您的项目,文件夹 lib,选择 standard.jar,按确定
  • 按“确定”关闭属性对话框
  • 单击“问题”视图并选择消息“类路径条目 .../jstl.jar 将不会被导出或发布。可能会导致运行时 ClassNotFoundExceptions。”。
  • 右键单击它并选择“快速修复”。
  • 接受默认的“将关联的原始类路径条目标记为发布/导出依赖项”,然后按“完成”。
  • 对 standard.jar 执行相同操作

这样就解决了问题,但是如果你想检查“部署程序集”中发生了什么,请再次打开项目属性,选择“部署程序集”,你会看到standard.jar和jstl.jar已被添加到WEB中- INF/lib 文件夹。

这是我的问题,我是如何解决它?

我已经做了一切每个人都上面提到的等等,但仍然得到这个错误。原来我使用http://java.sun.com/jsp/jstl/fmthttp://java.sun.com/jsp/jstl/core的URI的哪个是不正确的。

尝试从上述切换URI来:

http://java.sun.com/jstl/fmt
http://java.sun.com/jstl/core

此外,还要确保你在你的类路径中引用正确的罐子。

我有同样的问题与一条纹标签库URI表示作为未找到。我用靛蓝和Maven,当我检查属性 - > Java构建路径 - >订单和出口标签,我发现(上一个新项目结账)的“Maven依赖”复选框选中是因为某些原因。简单地检查框,并做了Maven的干净安装清除所有的错误。

我不知道为什么Eclipse不承担我要在构建路径我的Maven依赖...

遇到同样的问题,我使用Maven的,所以我说这个到POM在我的web项目:

<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version> <!-- just used the latest version, make sure you use the one you need -->
    <scope>provided</scope>
</dependency>

此固定的问题,我使用的“设置”范围,因为像OP,一切都在JBoss的已经工作。

在此处,我发现了解决方案: http://alfredjava.wordpress.com/2008 / 12 /第22 / JSTL-粗野,分辨/

当我试图包括在我的JSP JSTL核心库:

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

我在Eclipse(靛蓝)以下错误:

Can not find the tag library descriptor for "http://java.sun.com/jsp/jstl/core"

我去项目属性 - >目标运行时,然后检查了服务器我是用(Geronimo的3.0)。大多数人会使用Tomcat。这解决了我的问题。希望它可以帮助!

我今天解决了这个问题。

  • 将输出目录更改为 WEB-INF/classes 文件夹。(项目/属性/Java 构建路径,默认输出文件夹)
  • 分配模块依赖项。(项目/属性/Java EE 模块依赖项)它们将被复制到 WEB-INF/lib 文件夹,Eclipse 也会在其中查找标签库定义。

我希望它有帮助。

在很大程度上取决于它是什么样的项目。 WTP的JSP支持两种预期JSP文件是这就是WEB-INF文件夹中(src /网络,它将然后当作“/”找到顶级域名),或有项目的元数据设立的父同一个文件夹下帮助它知道那里根(通过部署大会为你做一个动态Web项目)。你是如何指TLD文件,其中JSP文件在什么位置?

也许我错过了原来的职位到Eclipse论坛;我看到了一个在这一个后贴一整天。

检查两个库 F:\apache-tomcat-7.0.21\webapps\examples\WEB-INF\lib:

  1. jstl.jar
  2. 标准.jar

我遇到了同样的问题。这就是我为解决该问题所做的事情。

  1. 选择项目并右键单击。
  2. 单击属性。
  3. 单击库选项卡。
  4. 单击“添加罐子”。
  5. 为您的错误添加相关的 jar。

您可以简单地去构建路径 - >添加库和库类型添加选择“服务器运行时”。点击下一步,选择一个服务器运行时添加到类路径和问题消失,如果的jstl.jar和standard.jar是在你的服务器的类路径。

我使用Spring STS插件和弹簧webmvc模板项目。我必须先安装的Maven插件M2E: http://www.eclipse.org/m2e/

然后清理项目。下Project -> Clean...

如果您的 tld 位于类路径上(通常位于 WEB-INF 目录下),则以下两个提示应该可以解决问题(无论您的环境设置如何):

  1. 确保 <uri> TLD 中的 uri 与 jsp 页面 taglib 指令中的 uri 相匹配。这 <uri> tld 的元素是标签库的唯一名称。

  2. 如果顶级域名没有 <uri> 元素时,容器将尝试使用 taglib 指令中的 uri 属性作为实际 TLD 的路径。例如我可以在 WEB-INF 文件夹中有一个自定义 tld 文件,并使用该 tld 的路径作为 JSP 中的 uri 值。然而,这是一种不好的做法,应该避免,因为路径将被硬编码。

我与MyEclipse的和Eclipse 6.6.0同样的问题。它在逢红内衬的URI值

<%@ taglib prefix="s" uri="/struts-tags"%>。 我转到“项目/ MyEclipse的/网络/标签库”,并设置默认TLD前缀对Struts 1.2 Tiles标记为“S”固定它。我也必须做同样的在“项目/ MyEclipse的/网络/配置工作区设置... /标签库”。

我有同样的问题与STS(springtool源套件)。

在STS,右键单击该项目,不是“属性”,“项目构面”,不是在“运行”选项卡上单击窗口的右侧,并勾选“的VMware的vFabric TC服务器(...)” ,并单击“应用”,它应该是工作空间刷新后确定。

以及您需要了解总有两件事情的API和实现(记住以下代码的格式的gradle)

compile group:'javax.servlet.jsp.jstl', name:'javax.servlet.jsp.jstl-api', version:'1.2.1'

compile group:'org.glassfish.web', name:'javax.servlet.jsp.jstl',version:'1.2.1'

因此,如果您使用的是servlet容器没有JSTL支持那么当然它不会提供他们两个,我犯了一个错误是,我只放第一位,但如果你使用全栈的应用服务器即GlassFish的,则Glassfish将具有两者已经内部。

对于我来说,每当我试图使用Eclipse的新版本出现此错误。显然,新的Eclipse复位M2_REPO变量和我在Marker视图(有时与EJB验证错误)中的所有标签库错误。

更新M2_REPO变量指向实际Maven仓库的位置后,需要2-3个项目 - >清洁迭代使一切工作正常。

和有时,存在与此标记库错误沿着一些XML验证错误(EJB)。手动更新相应的XML文件,启动* .xsd文件查找和XML验证错误得到解决。发布此,标签库错误也消失了。

在另一方面,如果你只从事Java源代码,并都可以从东西你不要在正在一个大项目触摸这些错误,你可以关闭验证在Eclipse中。的设置是首选项下>基于Web> JSP文件 - >验证

我在使用Tomcat 6.0和Eclipse同样的问题,我尝试了一些东西,我的朋友建议,它为我工作。 该链接的问题,我问我的回复评论说可以在这里找到:

JSTL的Tomcat 6.0找不到标签库描述符错误

让我知道这样能否解决您“无法找到标记库描述符”的问题。

可以从几个不同的来源产生此错误。当Eclipse不执行JSP规范的TLD文件中设定的版本的一个情况下(在其他的答案没有提到这个问题)发生。 Eclipse的版本身后长达一年的时间通常滞后于实施新的Servlet和JSP规范。请参阅此Eclipse的错误例如

在这种情况下,你的web应用可以运行在Tomcat中的最新版本的罚款,但是Eclipse可能仍抱怨缺少的TLD。短期内溶液(短忽略Eclipse中的错误的)是到JSP版本凸点向下到您的Eclipse版本支持一个。

此外,请记住您所用的TLD的版本。标签名称从V1.1略有改变至v2.0(即info现在descriptiontaglib并没有受到tag有效的元素,许多元素名称现在包含一个连字符)。 Eclipse有拼写错误的TLD标签名称没有气度。

TLD 2.0(JSP版本2.0)。参考

TLD 2.1(JSP版本2.3)参考

取代的jstl.jar到jstl1.2.jar解决该问题为Tomcat 7.0

我也面临同样的问题。请确保您有在Eclipse和Tomcat的工作目录JSTL的版本相同,即在\webapps\examples\WEB-INF\liblib文件夹中。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top