Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Unable to use Jakarta JSTL taglibs with JBuilder/Tomcat

15 views
Skip to first unread message

Romeo Guastaferri

unread,
Jul 19, 2002, 4:51:02 PM7/19/02
to
I've combed the newsgroups to find a solution for this one, but with
no success.

I'm trying to use Jakarta's Standard Taglib with JBuilder. No luck.
Here's my setup:

- JBuilder 6.0.438.0
- Tomcat 3.2 (also tried with 4.0
- JDK 1.4.0_01 (also tried 1.3)

Strange thing is that I can actually use the internationalization tags
(i18n.tld and i18n.jar) - although with a bunch of compilation
warnings:

"variable EVAL_BODY_TAG in interface javax.servlet.jsp.tagext.BodyTag
has been deprecated at line XXX"

But I could find no way of getting the core tags to work (c.tld,
jstl.jar & standard.jar).

If I include the following line in my JSP file,

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

I get the following errors:

org.apache.jasper.JasperException: Unable to open the tag library
descriptor java.sun.com
Unable to open taglibrary http://java.sun.com/jstl/core : Unable to
open the tag library descriptor java.sun.com at line XXX

I have the following entry in my project's web.xml file:
<taglib>
<taglib-uri>http://java.sun.com/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/tld/c.tld</taglib-location>
</taglib>

And yes, my tld file IS located in /WEB-INF/tld/c.tld. As proof, if I
delete the tld file from that location, I get a different error
message (java.io.FileNotFoundException). All this, using Tomcat 3.2.

If I switch to Tomcat 4.0, I can actually get the JSP to compile
cleanly. However, at runtime, an exception gets thrown (stack trace is
reproduced at the end of this posting).

Back to using Tomcat 3.2...

I've read in "Professional Java Server Programming J3EE 1.3 Edition"
that instead of mapping through a <taglib> descriptor in web.xml,
another way of using the taglib uri is to use it directly as a
location of the tld file. Which I tried:

<%@ taglib prefix="c" uri="/WEB-INF/tld/c.tld" %>

That, of course, resulted in a slightly different error message:

org.apache.jasper.JasperException: Unable to open the tag library
descriptor java.sun.com
Unable to open taglibrary /WEB-INF/tld/c.tld : Unable to open the
tag library descriptor java.sun.com at line XXX

I was a bit puzzled by this compilation error message. Again with
java.sun.com !! Looking deeper into this, I noticed the following
DOCTYPE declaration inside of c.tld:

<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

I got to thinking that maybe the compiler couldn't open the dtd file
from java.sun.com. So I tried getting the file myself, installed it
under /WEB-INF/dtd, and changing the DOCTYPE declaration inside of
c.tld :

<!DOCTYPE taglib
PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
"C:/MyApp/WEB-INF/dtd/web-jsptaglibrary_1_2.dtd">

That actually got the compilation to proceed without error ! However,
I DID get a truckload of compiler warnings...

Warning: Unknown element tlib-version in TLD
Warning: Unknown element jsp-version in TLD
Warning: Unknown element short-name in TLD
Warning: Unknown element display-name in TLD
Warning: Unknown element description in TLD
Warning: Unknown element validator in TLD
...and so on...
Plus a bunch of
Warning #: 368 : variable EVAL_BODY_TAG in interface
javax.servlet.jsp.tagext.BodyTag has been deprecated at line XXX

Now, when I try to run this thing and access my JSP page which
contains the tags:

<c:if test="${1 < 2}">
hello world !
</c:if>

I get the following runtime errors:


Warning: validation was turned on but an org.xml.sax.ErrorHandler was
not

set, which is probably not what is desired. Parser will use a default

ErrorHandler to print the first 10 errors. Please call

the 'setErrorHandler' method to fix this.

Error: URI=null Line=2: Element type "web-app" is not declared in the
dtd or schema.

Error: URI=null Line=3: Element type "context-param" is not declared
in the dtd or schema.

Error: URI=null Line=4: Element type "param-name" is not declared in
the dtd or schema.

Error: URI=null Line=5: Element type "param-value" is not declared in
the dtd or schema.

Error: URI=null Line=7: Element type "servlet" is not declared in the
dtd or schema.

Error: URI=null Line=8: Element type "servlet-name" is not declared in
the dtd or schema.

Error: URI=null Line=9: Element type "display-name" is not declared in
the dtd or schema.

Error: URI=null Line=10: Element type "jsp-file" is not declared in
the dtd or schema.

Error: URI=null Line=12: Element type "servlet" is not declared in the
dtd or schema.

Error: URI=null Line=13: Element type "servlet-name" is not declared
in the dtd or schema.

2002-07-19 16:42:11 - Warning: Unknown element tlib-version in TLD

2002-07-19 16:42:11 - Warning: Unknown element jsp-version in TLD

2002-07-19 16:42:11 - Warning: Unknown element short-name in TLD

2002-07-19 16:42:11 - Warning: Unknown element display-name in TLD

2002-07-19 16:42:11 - Warning: Unknown element description in TLD

2002-07-19 16:42:11 - Warning: Unknown element validator in TLD


The error that gets reported in the Web browser is:

Error: 500
Location: /CSAWeb/CSAWeb
Internal Servlet Error:

org.apache.jasper.compiler.CompileException:
C:\jbproject\CSA\jsp\CSAWeb.jsp(77,8) Unable to load class null
at org.apache.jasper.compiler.TagBeginGenerator.init(TagBeginGenerator.java:129)
at org.apache.jasper.compiler.JspParseEventListener$GeneratorWrapper.init(JspParseEventListener.java:759)
at org.apache.jasper.compiler.JspParseEventListener.addGenerator(JspParseEventListener.java:138)
at org.apache.jasper.compiler.JspParseEventListener.handleTagBegin(JspParseEventListener.java:909)
at org.apache.jasper.compiler.DelegatingListener.handleTagBegin(DelegatingListener.java:194)
at org.apache.jasper.compiler.Parser$Tag.accept(Parser.java:825)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1077)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1042)
at org.apache.jasper.compiler.Parser.parse(Parser.java:1038)
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:209)
at org.apache.jasper.servlet.JspServlet.doLoadJSP(JspServlet.java:612)
at org.apache.jasper.servlet.JasperLoader12.loadJSP(JasperLoader12.java:146)
at org.apache.jasper.servlet.JspServlet.loadJSP(JspServlet.java:542)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.loadIfNecessary(JspServlet.java:258)
at org.apache.jasper.servlet.JspServlet$JspServletWrapper.service(JspServlet.java:268)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:429)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:500)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.tomcat.core.ServletWrapper.doService(ServletWrapper.java:405)
at org.apache.tomcat.core.Handler.service(Handler.java:287)
at org.apache.tomcat.core.ServletWrapper.service(ServletWrapper.java:372)
at org.apache.tomcat.core.ContextManager.internalService(ContextManager.java:812)
at org.apache.tomcat.core.ContextManager.service(ContextManager.java:758)
at org.apache.tomcat.service.http.HttpConnectionHandler.processConnection(HttpConnectionHandler.java:213)
at org.apache.tomcat.service.TcpWorkerThread.runIt(PoolTcpEndpoint.java:416)
at org.apache.tomcat.util.ThreadPool$ControlRunnable.run(ThreadPool.java:501)
at java.lang.Thread.run(Thread.java:536)


HELP !!!

DOES ANYONE OUT THERE HAVE A CLUE AS TO HOW I CAN GET TO USE THESE
TAGLIBS WITH JBUILDER AND TOMCAT ?!?!?!?!?!


--------------------------------------------------------------
STACK TRACE RESULTING FROM TRYING TO EXECUTE UNDER TOMCAT 4.0:
(after a clean build)
--------------------------------------------------------------

Servlet /CSAWeb threw load() exception:
javax.servlet.ServletException: Servlet.init() for servlet jsp threw
exception

javax.servlet.ServletException: Servlet.init() for servlet jsp threw
exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

StandardContext[/CSAWeb]: Servlet /CSAWeb threw load() exception:
javax.servlet.ServletException: Servlet.init() for servlet debugjsp
threw exception

javax.servlet.ServletException: Servlet.init() for servlet debugjsp
threw exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

WebappLoader[]: Deploying class repositories to work directory
C:\jbproject\CSA\work

StandardManager[]: Seeding random number generator class
java.security.SecureRandom

StandardManager[]: Seeding of random number generator has been
completed

ContextConfig[]: Added certificates -> request attribute Valve

StandardWrapper[:default]: Loading container servlet default

StandardWrapper[:invoker]: Loading container servlet invoker

StandardContext[]: Servlet threw load() exception:
javax.servlet.ServletException: Servlet.init() for servlet jsp threw
exception

javax.servlet.ServletException: Servlet.init() for servlet jsp threw
exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

StandardContext[]: Servlet threw load() exception:
javax.servlet.ServletException: Servlet.init() for servlet debugjsp
threw exception

javax.servlet.ServletException: Servlet.init() for servlet debugjsp
threw exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:810)

at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3279)

at org.apache.catalina.core.StandardContext.start(StandardContext.java:3421)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardHost.start(StandardHost.java:638)

at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1123)

at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:343)

at org.apache.catalina.core.StandardService.start(StandardService.java:388)

at org.apache.catalina.core.StandardServer.start(StandardServer.java:506)

at org.apache.catalina.startup.Catalina.start(Catalina.java:781)

at org.apache.catalina.startup.Catalina.execute(Catalina.java:681)

at org.apache.catalina.startup.Catalina.process(Catalina.java:179)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:243)

HttpConnector[8080] Starting background thread

StandardWrapperValve[CSAWeb]: Allocate exception for servlet CSAWeb

javax.servlet.ServletException: Servlet.init() for servlet CSAWeb
threw exception

javax.servlet.ServletException: Servlet.init() for servlet CSAWeb
threw exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)

at java.lang.Thread.run(Thread.java:536)

StandardWrapperValve[CSAWeb]: Allocate exception for servlet CSAWeb

javax.servlet.ServletException: Servlet.init() for servlet CSAWeb
threw exception

javax.servlet.ServletException: Servlet.init() for servlet CSAWeb
threw exception

at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:946)

at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:655)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:190)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:246)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2347)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:170)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:564)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)

at org.apache.catalina.core.StandardPipeline.invokeNext(StandardPipeline.java:566)

at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:472)

at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:943)

at org.apache.catalina.connector.http.HttpProcessor.process(HttpProcessor.java:1027)

at org.apache.catalina.connector.http.HttpProcessor.run(HttpProcessor.java:1125)

at java.lang.Thread.run(Thread.java:536)
--------------------------------------------------------------------------

gman1

unread,
Jul 19, 2002, 7:57:16 PM7/19/02
to
-Never overlook the obvious: Did you stop tomcat, and restart it after you
set up your .jsp, and web.xml files?

-also I put my .tld files under /WEB-INF NOT /WEB-INF/tld
-I put my .jar files under /WEB-INF/lib

-other than this I can't help :-(

Shawn Bayern

unread,
Jul 19, 2002, 8:03:55 PM7/19/02
to
On 19 Jul 2002, Romeo Guastaferri wrote:

> I've combed the newsgroups to find a solution for this one, but with
> no success.
>
> I'm trying to use Jakarta's Standard Taglib with JBuilder. No luck.
> Here's my setup:
>
> - JBuilder 6.0.438.0
> - Tomcat 3.2 (also tried with 4.0
> - JDK 1.4.0_01 (also tried 1.3)
>
> Strange thing is that I can actually use the internationalization tags
> (i18n.tld and i18n.jar) - although with a bunch of compilation
> warnings:
>
> "variable EVAL_BODY_TAG in interface javax.servlet.jsp.tagext.BodyTag
> has been deprecated at line XXX"
>
> But I could find no way of getting the core tags to work (c.tld,
> jstl.jar & standard.jar).

A few things are important to emphasize before continuing:

* The libraries in Jakarta Taglibs are not all the "Standard Taglib."
For instance, i18n.tld and i18n.jar are NOT part of JSTL or the
Standard Taglib. They are supported only by the Jakarta community,
while JSTL is an official standard from the Java Community Process.

* JSTL requires a JSP 1.2 container, which means it will reauire Tomcat
4.x instead of Tomcat 3.x.

Unfortunately, there is not enough information about your attempts on
Tomcat 4.x for me to help. You've shown partial stack traces, but the
root causes were occluded either by JBuilder, some other part of
environment, or you (when you posted).

Also unfortunately, I don't have any experience with JBuilder, so I can't
tell if this is a JBuilder-specific issue or a Tomcat one. Have you tried
running the Standard Taglib in Tomcat 4.0.4 in isolation first, just to
make sure you know how to include everything that JSTL needs?

--
Shawn Bayern
JSTL reference-implementation lead
"JSTL in Action" http://www.jstlbook.com

0 new messages