Eclipse"找不到自定义标签的标签库描述符"(不是JSTL!)

rya*_*nki 61 java eclipse jsp taglib custom-tags

我有一个可以用Ant构建的Java EE项目,完美地部署到JBoss,运行没有任何问题.这个项目包括一些自定义标记库(不是JSTL!),它们也没有任何困难.

问题出在Eclipse IDE(Ganymede)上:在每个使用我们自定义标记的JSP文件中,JSP解析器使用此错误标记taglib包含行:

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

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

我们完美工作的JSP文件是一个红色错误的海洋,我的眼睛开始燃烧.

我怎样才能简单地告诉Eclipse,"你要找的标签库描述符是"src/web/WEB-INF /(example)-taglib /(example).tld"?

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

sti*_*vlo 28

在Eclipse Helios中,项目属性中的"Java EE Module Dependencies"已替换为"Deployment Assembly".

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

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

这解决了这个问题,但如果你想检查"部署程序集"中发生了什么,再次打开项目属性,选择"部署程序集",你会看到已将标准.jar和jstl.jar添加到WEB- INF/lib文件夹.

  • 这个答案只描述了如何安装JSTL(以一种狡猾的方式),因此没有回答OP的自定义taglib的具体问题.OP问题的真正答案是[下面](http://stackoverflow.com/a/1587526).如何以正确的方式实际安装JSTL在这里得到解答:[找不到"http://java.sun.com/jsp/jstl/core"](http://stackoverflow.com/questions/)的标签库描述符13285826 /可 - 不找-的标签库描述符换HTTP-java的太阳-COM-JSP-JSTL核心). (2认同)

Pol*_*878 18

这是我的问题以及我如何解决它...

我做过上面提到的所有事情,但仍然遇到了这个错误.事实证明我使用的是uri,http://java.sun.com/jsp/jstl/fmt而且http://java.sun.com/jsp/jstl/core不正确.

尝试将uris从上面切换到:

http://java.sun.com/jstl/fmt
http://java.sun.com/jstl/core
Run Code Online (Sandbox Code Playgroud)

另外,请确保在类路径中引用了正确的jar.

  • 如果你想要JSTL 1.2,那么使用`http:// java.sun.com/jsp/jstl/*`为JSTL 1.0使用`http:// java.sun.com/jstl/*`. (11认同)

小智 13

我有同样的问题,条纹taglib uri显示为未找到.我正在使用Indigo和Maven,当我检查Properties-> Java Build Path-> Order&Export选项卡时,我发现(在新项目结账时)由于某种原因未选中"Maven Dependencies"复选框.只需检查该框并执行Maven clean安装即可清除所有错误.

我想知道为什么Eclipse不假设我想在构建路径中使用我的Maven依赖项...


rya*_*nki 10

事实证明,原因是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>
Run Code Online (Sandbox Code Playgroud)

我能够通过创建一个新的"动态Web项目"找到原因,该项目正确读取其JSP文件,并针对旧项目的配置进行区分.

我能找到添加这些内容的唯一方法是编辑.project文件,但重新打开项目后,一切都神奇地起作用.上面的pribeiro引用的设置不是必需的,因为项目已经符合默认设置.

pribeiro和nitind的答案都给了我想要快速启动我的搜索,谢谢.

有没有办法在UI中编辑这些"性质"?


Mar*_*ler 8

遇到同样的问题,我正在使用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>
Run Code Online (Sandbox Code Playgroud)

这解决了问题,我使用了"提供"范围,因为像OP一样,一切都已经在JBoss中运行了.

这是我找到解决方案的地方:http://alfredjava.wordpress.com/2008/12/22/jstl-connot-resolved/