对于自定义标签(不是JSTL!),Eclipse“找不到标签库描述符”

我有一个Java EE项目,它可以很好地与Ant搭配,完美地部署到JBoss,并且运行起来没有任何问题。 这个项目包括一些自定义标签库(不是JSTL !),它们也没有任何困难。

问题在于Eclipse IDE(Ganymede):在使用我们的自定义标签的每一个JSP文件中,JSPparsing器标记taglib include行,并带有一个错误“找不到标签库描述符(example).tld”

这也会导致标签库的每一次使用都被标记为错误,并且由于IDE没有定义它,所以它不能检查标签参数等等。
我们完美的JSP文件是一个红色的错误海洋,我的眼睛开始燃烧。

我怎么才能告诉Eclipse“你正在寻找的标签库描述符是”src / web / WEB-INF /(示例)-taglib /(示例).tld“?

我已经在Eclipse支持论坛上问过这个问题,没有有用的结果。

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

所以为了解决Eclipse Helios的这个问题,我做了以下工作:

  • 右键单击包浏览器中的项目,然后select“导入…”
  • 接受默认select“文件系统”,然后按“下一步”
  • 在From目录行按“浏览”,进入你的tomcat安装目录,find文件webapps / examples / WEB-INF / lib(我有tomcat 6,其他版本的Tomcat可能有pathwebapps / jsp-examples / WEB- INF / lib目录)。 一旦进入path,按OK。
  • 单击除jstl.jar和standard.jar以激活checkbox
  • 在Into文件夹上点击Browse并select库文件夹。 我在项目中使用/ lib。
  • 点击“完成”
  • 右键单击Package Explorer视图中的项目,然后select属性(或按Alt + Enter)
  • 点击“Java Build Path”
  • 点击“添加Jar”,点击你的项目,文件夹库,selectjstl.jar,按OK
  • 点击“添加Jar”,点击你的项目,文件夹库,selectstandard.jar,按OK
  • 按确定closures属性对话框
  • 点击Problems视图并select消息“Classpath entry … / jstl.jar不会被导出或发布,运行时可能导致ClassNotFoundExceptions。”
  • 右键点击它并select“快速修复”。
  • 接受默认的“将关联的原始类path条目标记为发布/导出依赖关系”,然后按“完成”。
  • 为standard.jar做同样的事情

这样可以解决这个问题,但是如果你想检查“Deployment Assembly”中发生了什么,再次打开项目属性,select“Deployment Assembly”,你会发现standard.jar和jstl.jar已经被添加到WEB- INF / lib文件夹。

这是我的问题,我怎么修复它…

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

尝试从上面切换uris到:

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

另外,确保你的类path中引用了正确的jar包。

我有一个条纹taglib uri相同的问题显示为未find。 我使用的是Indigo和Maven,当我检查Properties-> Java Build Path-> Order&Export Tab时,我发现(在一个新的项目结帐中)出于某种原因,“Maven Dependencies”checkbox未被选中。 只需检查该框并执行Maven clean install,即可清除所有错误。

我想知道为什么Eclipse不假设我想在构buildpath中的我的Maven依赖项…

事实certificate,原因是这个项目并没有被Eclipse认为是一个Java EE项目; 这是一个来自3.1的旧项目,我们现在使用的Eclipse 3.5需要在项目configuration文件中设置几个“特性”。

 <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> 

我能够通过创build一个新的“dynamicWeb项目”来正确地读取其JSP文件,并根据旧项目的configuration来find原因。

我可以find添加这些的唯一方法是编辑.project文件,但重新打开项目后,一切都神奇地工作。 上面的pribeiro引用的设置是没有必要的,因为项目已经符合默认设置。

pribeiro和nitind的答案给了我启动我的search的想法,谢谢。

有没有从UI内编辑这些“性质”的方法?

进入同样的问题,我正在使用maven,所以我把它添加到我的web项目中的pom:

 <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中已经有一切工作。

这里是我find解决scheme的地方: http : //alfredjava.wordpress.com/2008/12/22/jstl-connot-resolved/

当我尝试在我的JSP中包含JSTL核心库时:

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

Eclipse(Indigo)中出现以下错误:

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

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

我今天解决了这个问题。

  • 将您的输出目录更改为您的WEB-INF / classes文件夹。 (项目/属性/ Java构buildpath,默认输出文件夹)
  • 指定模块依赖关系。 (Project / Properties / Java EE Module Dependencies),它们将被复制到Eclipse查找标签库定义的WEB-INF / lib文件夹中。

我希望它有帮助。

很多取决于它是什么样的项目。 WTP的JSP支持要么期望JSP文件位于WEB-INF文件夹的父文件夹(src / web,它将被视为“/”来查找TLD)的同一个文件夹下,或者将项目元数据设置为帮助它知道根的位置(通过部署程序集在dynamicWeb项目中为您完成)。 您如何引用TLD文件,以及JSP文件位于何处?

也许我错过了原来的post到Eclipse论坛; 我看到的那个在这个之后被张贴了一整天。

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

  1. 的jstl.jar
  2. standard.jar

我面临同样的问题。 这是我所做的解决这个问题。

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

你可以简单地去build立path – >添加库和库types添加select“服务器运行时间”。 单击下一步并select一个服务器运行时添加到类path中,如果jstl.jar和standard.jar位于服务器的类path中,则问题消失。

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

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

如果您的tld位于类path中,通常位于WEB-INF目录下,以下两个提示可以解决问题(不考虑您的环境设置):

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

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

我有和MyEclipse和Eclipse 6.6.0相同的问题。 它红色排列在每一个uri价值

<%@ taglib prefix="s" uri="/struts-tags"%> 。 我通过进入“Project / MyEclipse / Web / Tag Libraries”并将Struts 1.2 Tiles标签的Default TLD Prefix设置为's'来修复它。 我也必须在“Project / MyEclipse / Web / Configure workspace settings … / Tag Libraries”下执行相同的操作。

我有与STS(springtool源代码套件)相同的问题。

在STS下,右键点击项目,比“Properties”,“Project Facets”,在窗口右侧点击“runtime”标签,勾选“VMware vFabric tc Server(…)”,点击“应用”,刷新工作区后应该可以。

那么你需要明白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那么玻璃鱼就已经在里面了。

对我而言,每当我尝试使用新版本的eclipse时都会发生此错误。 显然,新的eclipse重置了M2_REPOvariables,并且我在Marker视图中得到了所有的标记库错误(有时候还有ejbvalidation错误)。

在更新M2_REPOvariables以指向实际的Maven存储库位置之后,需要2-3个Project – > Clean迭代才能使所有的工作都能正常工作。

有时候,还有一些XMLvalidation错误(ejb)以及这个标签库错误。 手动更新相应的XML文件,启动* .xsd文件查找并解决xmlvalidation错误。 发布这个,标签库的错误也消失了。

另一方面,如果您只是在使用java源代码,并且正在从一个大的项目中获取这些错误,那么您可以closuresEclipse中的validation。 这些设置位于Preferences-> Web-> JSP Files-> Validation下

我使用Tomcat 6.0和Eclipse时遇到了同样的问题,我尝试了一些我的朋友build议的方法,它对我很有帮助。 我问的问题链接和我的回复评论可以在这里find:

JSTL Tomcat 6.0找不到taglib描述符错误

让我知道如果这解决了你的“无法find标签库描述符”的问题。

这个错误可能来自几个不同的来源。 当Eclipse没有实现TLD文档中设置的JSP规范的版本时,就会出现一种情况(在这个问题的其他答案中没有提到)。 Eclipse版本通常在实施新的servlet和JSP规范方面落后一年。 看到这个Eclipse错误的例子。

在这种情况下,您的Web应用程序可能在最新版本的Tomcat中运行正常,但Eclipse仍然可能会抱怨缺lessTLD。 短期解决scheme(忽略Eclipse中的错误)是将JSP版本降级到Eclipse支持的版本。

另外,请记住您正在实施的TLD版本。 标签名称已经从v1.1稍微改变到v2.0(即info现在是在taglib description ,而不是tag下的有效元素,现在许多元素名称都包含连字符)。 Eclipse不允许拼写错误的TLD标签名称。

TLD 2.0(jsp-version 2.0)参考

TLD 2.1(jsp-version 2.3)参考

将jstl.jarreplace为jstl1.2.jar解决了tomcat 7.0的问题

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