因此,我在Gemini运行时下的OSGi中使用JSTL。当我尝试访问我的URL时,出现以下异常servlet:-
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。所以,不确定,这是怎么回事。
JstlCoreTLV class
这是我JSP正在使用的标题(以防万一,这是相关的):-
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 ),它与其他人不兼容。因此,我将其删除,警告消失了。
taglibs.standard_1.1.2
因此,您可以忽略此处的所有内容。但是,上面的问题仍然存在。我仍然明白JasperException。可能会有所帮助,因为@BalusC的宝贵意见使问题域现在有所减少。
JasperException
解决后的一部分。 因此,您可以忽略它:-
另外,我不知道的是,OSGi的JSTL的版本捆绑,我有- Bundle 75,与其他捆绑兼容- ,,javax.el 等,还是不行。因为我在用,但是我无法得到它的捆绑。我得到的是我使用的捆绑包()。之所以困扰我,是因为在启动应用程序时出现了此类消息:-taglibs``servlets``JSTL 1.2.1``JSTL 1.2.1``JSTL 1.2.0
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:-
http://java.sun.com/jstl/core
http://java.sun.com/jsp/jstl/core
现在,AFAIK这两个URL都不属于同一JSTL版本。那么,这会引起一些问题吗?他们来的原因可能是什么?我刚用过一个JSTL bundle。
JSTL
JSTL bundle
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。