• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Default JSTL URI can't be resolved

 
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I have the following as the first line of my JSP:

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


When I access the page I get the following error message from Tomcat:

The absolute uri: http://java.sun.com/jstl/core cannot be resolved in either web.xml or the jar files deployed with this application


Can anyone suggest what I can do to get around this?

Thanks in advance!


--James
 
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
What version of the JSTL and Tomcat?
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm using Tomcat 5.5.

I'm not sure of the JSTL version I need, but I want to use the following code in my JSP:

<c:forEach items="${model.product}"
var="item">
<TR>
<TD><c ut value="${item.symbol}"/></TD>
<TD><c ut value="${item.price}"/></TD>
<TD><c ut value="${item.quantity}"/></TD>
</TR>
</c:forEach>


Thanks...


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
With Tomcat 5, which is a JSP 2.0 container, you need JSTL 1.1.

The URI you gave was a JSTL 1.0 URI.

The appropriate URI would be http://java.sun.com/jsp/jstl/core

Be sure that the appropriate JSTL jar files (jstl.jar and standard.jar) are in WEB-INF/lib.
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Bear. Unfortunately I still have the unresolved JSTL URI problem. I am experiencing other weird voodoo with Tomcat so perhaps I have a deeper problem. I will make a separate posting or two outlining the other problems, hopefully someone can tell me what is going on and that will fix this problem as a side effect. I'm using a fresh vanilla install of the latest version of Tomcat on Windows XP, with no custom configurations, so I'm clueless as to why I am having so much trouble. I am having trouble 1) with redeployment of WAR files not being exploded correctly under the $TOMCAT_HOME/webapps directory (I'm running Ant war and copy tasks from within Eclipse), and 2) with an old, nonexistent version of a JSP page *sometimes* being displayed instead of the current JSP page which is used as the view by my Spring MVC application (I have cleared the cache of the browser but this doesn't help). Furthermore when I kill Tomcat and start it again the Tomcat manager shows active sessions for the application, which maybe has something to do with the problem #2 above. How any of this relates to the problem of not being able to resolve the JSTL URI is not clear to me, but hopefully I'll be able to find out and I'll update this thread with the information.


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I can't comment on your other issues (please be sure to post Tomcat-specific questions in the Tomcat forum) without more info, but with regards to the JSTL:

1) Where did you get your JSTL 1.1 implementation?

2) Are the two jar files in WEB-INF/lib?
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The jstl.jar and standard.jar came from spring-framework-1.2.3-with-dependencies.zip, and both are included in the WEB-INF/lib directory.

I have posted a question to the Tomcat group here


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

The jstl.jar and standard.jar came from



Check that these are a JSTL 1.1 implementation. A means to perform a direct check would be to open up standard.jar, find and open c.tld and check its URI.
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
It turns out that these libraries which come with Spring are JSTL 1.0. I changed the URI back to the JSTL 1.0 version and now all works as advertised.

I think my original problem was that I was using the correct JSTL 1.0 URI and had jstl.jar in WEB-INF/lib, but I didn't have standard.jar in WEB-INF/lib.

Thanks for your help!


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You will run into compatibility issues using JSTL 1.0 with a JSP 2.0 container. My advice is to replace the jars with the JSTL 1.1 jars asap.
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Bear, will do.

--James
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Something odd happens when I use the JSTL 1.1 implementations from Jakarta (jakarta-taglibs-standard-1.1.2.zip). Whereas before (using the JSTL 1.0 URI and the implementations found in the Spring distribution) I would get values displayed in my table as expected. Now what I see is the actual code displayed, i.e. ${item.price} instead of 47.00, for example. However when I go back to using the JSTL 1.0 URI but still use the the JSTL 1.1 implementations in my WEB-INF/lib I get the proper behavior, i.e. I see the actual values instead of the code strings. Does this make any sense?

BTW my JSP code looks like this:



--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Are you using the correct JSTL 1.1 URI?

Is your web app declared as a Servlet 2.4 web app in the web.xml? (which, in Tomcat enables the EL)
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The URI I use for JSTL 1.1 is http://java.sun.com/jsp/jstl/core

The URI I use for JSTL 1.0 is http://java.sun.com/jstl/core

How would I specify that my application uses Servlet 2.4 in web.xml? Is this required for JSTL 1.1?

Do I not want to have EL processing performed on my JSPs? Do you suspect that an initial EL evaluation is what is causing the problem?


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To declare the web app as a 2.4-conformant app, the web.xml should be:



This will tell Tomcat to turn on the EL processing and other JSP 2.0 type "Stuff".
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
When I add that to my web.xml I get the same problem as before when using the JSTL 1.1 URI -- I see the code and not the values. I think I'll just stick with using the JSTL 1.0 URI since the JSTL tags are working as advertised when I use that.


--James
 
Bear Bibeault
Sheriff
Posts: 67746
173
Mac Mac OS X IntelliJ IDE jQuery TypeScript Java iOS
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
You've clearly got some versioning issues. You can try to stick with JSTL 1.0, but I can guarentee you'll run into trouble.

Have you tried making sure that template text EL expressions are evaluated completely outside of the JSTL?

Something simple like:

<p>3 + 4 = ${3 + 4}</p>

in the body.

If this isn't working. Your app isn't set up correctly
 
James Adams
Ranch Hand
Posts: 188
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
What's very strange is that this is working for me now, sometimes. If I change the web.xml to Servlet 2.4 and then the JSTL URI back to 1.0 I can get the code and not the values, and then change the URI back to 1.1 and still only see the code. I went back abnd forth with several combinations and finally it is working as advertised again using Servlet 2.4 in the web.xml and JSTL 1.1 URI in the JSP. I think there is something weird going on with my installation of Tomcat, as it appears to be caching pages, or maybe the browser is not refreshing each time as it should. Honestly, I'm not doing anything fishy with my Tomcat, and this is the only application running on it. I never expected it would be so complicated just to use a simple JSTL loop tag. In any event I will stay with the Servlet 2.4 setting in web.xml and the JSTL 1.1 URI in my JSP pages, hopefully things will continue to work as they should if I don't muck around with these settings again.

Thanks again for your help with this problem.


--James
 
reply
    Bookmark Topic Watch Topic
  • New Topic