title: Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV
body: <p>So I was working with JSTL in OSGi, under Gemini runtime. And I'm getting following exception, when I try to access the url to my <code>servlet</code>: -</p>
  
  <pre><code>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
  </code></pre>
  
  <p>However, I have checked, that I already have all the necessary bundles in my runtime. The relevant bundle that I have is: -</p>
  
  <pre><code>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
  </code></pre>
  
  <p>There are more bundles, but those are the ones that are relevant. So, I can't understand what went wrong.</p>
  
  <p>From the <a href="http://ebr.springsource.com/repository/app/">Spring Source Repository</a>, from where I downloaded the bundle, it's clear that, <a href="http://ebr.springsource.com/repository/app/bundle/version/detail?name=com.springsource.javax.servlet.jsp.jstl&amp;version=1.2.0.v20110728&amp;searchType=bundlesBySymbolicName&amp;searchQuery=com.springsource.javax.servlet.jsp.jstl">org.apache.taglibs.standard</a> bundle - <em>Bundle 121</em>, contains that <code>JstlCoreTLV class</code>.
  So, not sure, what's going on here.</p>
  
  <p>Here's my <code>JSP</code> header I'm using (Just in case, it is relevant): -</p>
  
  <pre><code>&lt;%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %&gt;
  </code></pre>
  
  <p>I'm using: -</p>
  
  <ul>
  <li><code>Servlet 3.0</code></li>
  <li><code>JSP 2.2</code></li>
  <li><code>Gemini Runtime 2.1</code></li>
  <li><code>JSTL 1.2.0</code></li>
  </ul>
  
  <hr>
  
  <p><strong>Update: -</strong> </p>
  
  <p>The problem described below seems to be solved, and now I'm not getting any warning as shown below. That was because, I was having the <code>taglibs.standard_1.1.2</code> - (<strong>Bundle 121</strong>), which was incompatible to others. So, I removed it, and the warnings went away. </p>
  
  <p>So, you can ignore whatever is there from here on. But, The problem above is still there. I'm still getting that <code>JasperException</code>. May be this will help further, as the problem domain is reduced now a little bit thanks to the valuable input from @BalusC.</p>
  
  <hr>
  
  <p><strong>Part after this is solved. So, you can ignore it: -</strong></p>
  
  <p>Also, I'm not sure that the version of the OSGi JSTL bundle that I have - <code>Bundle 75</code>, is compatible with the other bundles - <code>javax.el</code>, <code>taglibs</code>, <code>servlets</code>, etc, or not. Because I was using <code>JSTL 1.2.1</code>, but I couldn't get the bundle for <code>JSTL 1.2.1</code>. What I got was the bundle I used (<code>JSTL 1.2.0</code>). Why this is bothering me is because of these kinds of messages coming up, when I start my application: -</p>
  
  <pre><code>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
  </code></pre>
  
  <p>As you can see that there two different URLs shown above: - </p>
  
  <ul>
  <li>URI: <code>http://java.sun.com/jstl/core</code></li>
  <li>URI: <code>http://java.sun.com/jsp/jstl/core</code></li>
  </ul>
  
  <p>Now, AFAIK both those URLs, do not belong to same <code>JSTL</code> versions.
  So, could that raise some problems? And what can be the reason for them to come? I have just used one <code>JSTL bundle</code>.</p>