小编典典

无法加载或实例化TagLibraryValidator类:org.apache.taglibs.standard.tlv.JstlCoreTLV

jsp

因此,我在Gemini运行时下的OSGi中使用JSTL。当我尝试访问我的URL时,出现以下异常servlet:-

SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.JasperException: /WEB-INF/login.jsp (line: 3, column: 66) Unable to read TLD "META-INF/c.tld" from JAR file "file:/D:/OSGi%20Runtime/Gemini/gemini-web/dep/com.springsource.javax.servlet.jsp.jstl-1.2.0.v20110728.jar": org.apache.jasper.JasperException: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

但是,我已经检查过,我在运行时中已经具有所有必需的包。我拥有的相关捆绑商品是:-

71  ACTIVE      javax.servlet_3.0.0.v201103241009
73  ACTIVE      javax.el_2.2.0.v201105051105
74  ACTIVE      javax.servlet.jsp_2.2.0.v201103241009
75  ACTIVE      com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
121 ACTIVE      com.springsource.org.apache.taglibs.standard_1.1.2.v20110517

有更多的捆绑包,但是那些是相关的。所以,我不明白出了什么问题。

从我从中下载捆绑软件的Spring Source
Repository中
,可以清楚地看到org.apache.taglibs.standard捆绑软件-
捆绑软件121 包含了该 捆绑软件JstlCoreTLV class。所以,不确定,这是怎么回事。

这是我JSP正在使用的标题(以防万一,这是相关的):-

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

我在用着: -

  • Servlet 3.0
  • JSP 2.2
  • Gemini Runtime 2.1
  • JSTL 1.2.0

更新:-

如下所述的问题似乎已解决,现在我没有收到如下所示的任何警告。那是因为,我有taglibs.standard_1.1.2-( 捆绑包121
),它与其他人不兼容。因此,我将其删除,警告消失了。

因此,您可以忽略此处的所有内容。但是,上面的问题仍然存在。我仍然明白JasperException。可能会有所帮助,因为@BalusC的宝贵意见使问题域现在有所减少。


解决后的一部分。 因此,您可以忽略它:-

另外,我不知道的是,OSGi的JSTL的版本捆绑,我有- Bundle 75,与其他捆绑兼容- ,,javax.el
等,还是不行。因为我在用,但是我无法得到它的捆绑。我得到的是我使用的捆绑包()。之所以困扰我,是因为在启动应用程序时出现了此类消息:-taglibs``servlets``JSTL 1.2.1``JSTL 1.2.1``JSTL 1.2.0

Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/core is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/core is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt_rt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jstl/fmt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/fmt is already defined
Jan 22, 2013 7:14:05 PM org.apache.catalina.startup.TaglibUriRule body
INFO: TLD skipped. URI: http://java.sun.com/jsp/jstl/functions is already defined

如您所见,上面显示了两个不同的URL:-

  • URI: http://java.sun.com/jstl/core
  • URI: http://java.sun.com/jsp/jstl/core

现在,AFAIK这两个URL都不属于同一JSTL版本。那么,这会引起一些问题吗?他们来的原因可能是什么?我刚用过一个JSTL bundle


阅读 2055

收藏
2020-06-08

共1个答案

小编典典

com.springsource.javax.servlet.jsp.jstl_1.2.0.v20110728
com.springsource.org.apache.taglibs.standard_1.1.2.v20110517

您正在将JSTL 1.2.0 API + impl与JSTL 1.1.2 impl混合使用。

这两个提示相互冲突,这说明了您所遇到的所有麻烦。

摆脱1.1.2 impl。

2020-06-08