Thanks for the help.
I've been toiling away with the suggestion mentioned below the last few days, migrating my JSTL1.0/TC 4.* to JSTL1.1/TC5.*, and I still cannot make it work :( So, I tried to run a really simple webapp to test if the JSTL Core library will run on my server. Unfortunately, even this simple webapp doesn't run. I still get the error: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator
It looks like Tomcat is picking up an old (JSP 1.1) version of the JSP classes. Make sure you don't have any JSP or Servlet related JAR files in the JAVA_HOME/jre/lib/ext directory, because JAR files there override the ones bundled with Tomcat (or any other servlet container, for that matter).
Hans
Here is the structure of the simple webapp. I'm also adding the source
code of the JSP file and web.xml. Please correct any errors that I
might have missed since I'm such a newbie at this thing.
Thanks again for any help.
Web-app directory structure:
.:
index.html jstl-simple.jsp WEB-INF
./WEB-INF:
classes c.tld lib web.xml ./WEB-INF/classes:
./WEB-INF/lib:
jstl.jar standard.jar
********jstl-simple.jsp
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Count to 10 Example (using JSTL)</title>
</head>
<body>
<c:forEach var="i" begin="1" end="10" step="1">
<c:out value="${i}" />
<br />
</c:forEach>
</body>
</html>
*************web.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC
'-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN'
'http://java.sun.com/dtd/web-app_2_3.dtd'>
<web-app>
<servlet>
<servlet-name>Home Page</servlet-name>
<jsp-file>/index.html</jsp-file>
</servlet>
<servlet>
<servlet-name>JSTL-Simple</servlet-name>
<jsp-file>/jstl-simple.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>JSTL-Simple</servlet-name>
<url-pattern>/jstl-simple</url-pattern>
</servlet-mapping>
<taglib>
<taglib-uri>http://java.sun.com/jsp/jstl/core</taglib-uri>
<taglib-location>/WEB-INF/c.tld</taglib-location>
</taglib>
<resource-ref>
<res-ref-name>jdbc/conversion</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>
On Wed, 2003-11-19 at 11:28, Kris Schneider wrote:
If you're using TC 5, you should also be using JSTL 1.1. Instead of putting the JSTL JAR files in $CATALINA_HOME/common/lib, put them in your app's WEB-INF/lib directory. Note that the taglib URIs have changed between JSTL 1.0 and 1.1. For example:
1.0: http://java.sun.com/jstl/core
1.1: http://java.sun.com/jsp/jstl/core
Quoting Anna Lissa Saupan <[EMAIL PROTECTED]>:
Thanks for the help.
I did what you suggested. I deployed the application-examples.war that came with the JSTL distribution, which runs properly. It was also suggested that: CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar:$AXISCLASSPATH cannot be properly parsed by Linux/Unix. "The /*.jar statements won't parse correctly under any version of *nix that I know of ;-)." so I modified my CLASSPATH to: CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$AXISCLASSPATH
When I run application-examples.war, I get this result (selected): org.apache.catalina.jsp_classpath = /opt/jakarta-tomcat-5.0.12/webapps/application-examples/WEB-INF/classes/
:/opt/jakarta-tomcat-5.0.12/webapps/application-examples/WEB-INF/lib/taglibs-application.jar
:/opt/jakarta-tomcat-5.0.12/shared/classes/:/opt/jakarta-tomcat-5.0.12/common/classes/
:/opt/jakarta-tomcat-5.0.12/common/endorsed/xercesImpl.jar :/opt/jakarta-tomcat-5.0.12/common/endorsed/xmlParserAPIs.jar :/opt/jakarta-tomcat-5.0.12/common/lib/jasper-compiler.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/jmx.jar:/opt/jakarta-tomcat-5.0.12/common/lib/commons-el.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/commons-collections.jar :/opt/jakarta-tomcat-5.0.12/common/lib/naming-java.jar :/opt/jakarta-tomcat-5.0.12/common/lib/commons-pool.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/jasper-runtime.jar:/opt/jakarta-tomcat-5.0.12/common/lib/naming-factory.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/servlet-api.jar:/opt/jakarta-tomcat-5.0.12/common/lib/naming-resources.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/commons-dbcp.jar:/opt/jakarta-tomcat-5.0.12/common/lib/ant.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/naming-common.jar:/opt/jakarta-tomcat-5.0.12/common/lib/jsp-api.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/mysql-connector-java-3.0.9-stable-bin.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/j2ee.jar:/opt/jakarta-tomcat-5.0.12/common/lib/jstl.jar
:/opt/jakarta-tomcat-5.0.12/common/lib/standard.jar:/opt/j2sdk_nb/j2sdk1.4.2/lib/tools.jar
:/opt/jakarta-tomcat-5.0.12/bin/bootstrap.jar:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/sunjce_provider.jar
:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/dnsns.jar:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/jstl.jar
:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/ldapsec.jar:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/localedata.jar
:/opt/j2sdk_nb/j2sdk1.4.2/jre/lib/ext/standard.jarAXISCLASSPATH=$AXIS_LIB/axis.jar:$AXIS_LIB/commons-discovery.jar:$AXIS_LIB/commons-logging.jar:$AXIS_LIB/jaxrpc.jar:$AXIS_LIB/saaj.jar:$AXIS_LIB/log4j-1.2.8.jar:$CATALINA_HOME/common/endorsed/xercesImpl.jar:$CATALINA_HOME/common/endorsed/xml-apis.jar:$CATALINA_HOME/common/endorsed/xmlParserAPIs.jar:$AXIS_LIB/wsdl4j.jar:$CATALINA_HOME/common/lib/activation.jar
I also added jstl.jar and standard.jar to <CATALINA_HOME>/common/lib so all my web-apps can use it.
JSP applications with custom taglibs can be run properly in my server, only when I try to use the JSTL distribution that it fails.
Can one reason be that taglibs v1.0 is not supported by Tomcat 5.*.*? I'm trying to run JSTL application examples that came with "Tomcat Kick
Start" by M. Bond, and D. Law. This book applies to Tomcat 4.* and
Taglib v1.0.
My next recourse is to convert the apps to its most current version.
Thanks again.
On Tue, 2003-11-18 at 16:05, Kris Schneider wrote:
Your classpath shouldn't matter. The TC startup script will ignore it and
build
its own. Have you tried deploying the standard-examples.war application
that
comes with the JSTL distribution? Have you modified either your TC or JDK install? For example, by adding or removing JAR files, perhaps for XML
parsers?
Quoting Anna Lissa Saupan <[EMAIL PROTECTED]>:
Hi,
Any help will be greatly appreciated.
My current server has the following environment: Tomcat Version => Apache Tomcat/5.0.12 JVM Version => 1.4.2-b28 JVM Vendor => Sun Microsystems Inc. Redhat Linux 9 OS Name => Linux OS Version => 2.4.20-8 OS Architecture => i386 Tag Library => 1.1
Profile setup (selected):
CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar:$AXISCLASSPATH
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1278)servlet-api.jar can be found in <CATALINA_HOME>/common/lib
I'm trying to run JSP applications that uses JSTL but I get this error all the time. I get the same error even while running the simplest
JSTL
application.
Here is the Server Error that I get:
HTTP Status 500 -
________________________________________________________________________
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax/servlet/jsp/tagext/TagLibraryValidator org.apache.jasper.servlet.JspServlet.service(JspServlet.java:256) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
root cause
java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagLibraryValidator java.lang.ClassLoader.defineClass0(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:537)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
java.net.URLClassLoader.defineClass(URLClassLoader.java:251) java.net.URLClassLoader.access$100(URLClassLoader.java:55) java.net.URLClassLoader$1.run(URLClassLoader.java:194) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:187) java.lang.ClassLoader.loadClass(ClassLoader.java:289) java.lang.ClassLoader.loadClass(ClassLoader.java:235) java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302) java.lang.ClassLoader.defineClass0(Native Method) java.lang.ClassLoader.defineClass(ClassLoader.java:537)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
java.net.URLClassLoader.defineClass(URLClassLoader.java:251) java.net.URLClassLoader.access$100(URLClassLoader.java:55) java.net.URLClassLoader$1.run(URLClassLoader.java:194) java.security.AccessController.doPrivileged(Native Method) java.net.URLClassLoader.findClass(URLClassLoader.java:187) java.lang.ClassLoader.loadClass(ClassLoader.java:289) java.lang.ClassLoader.loadClass(ClassLoader.java:282) sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:274) java.lang.ClassLoader.loadClass(ClassLoader.java:235)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1212)
org.apache.jasper.compiler.TagLibraryInfoImpl.createValidator(TagLibraryInfoImpl.java:654)
org.apache.jasper.compiler.TagLibraryInfoImpl.parseTLD(TagLibraryInfoImpl.java:293)
org.apache.jasper.compiler.TagLibraryInfoImpl.(TagLibraryInfoImpl.java:204)
org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:460)
org.apache.jasper.compiler.Parser.parseDirective(Parser.java:525) org.apache.jasper.compiler.Parser.parseElements(Parser.java:1625) org.apache.jasper.compiler.Parser.parse(Parser.java:173)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:247)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:149)
org.apache.jasper.compiler.ParserController.parse(ParserController.java:135)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:243) org.apache.jasper.compiler.Compiler.compile(Compiler.java:451) org.apache.jasper.compiler.Compiler.compile(Compiler.java:437)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:555)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:291)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:301)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:248) javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
note The full stack trace of the root cause is available in the Tomcat logs.
************ ************
Thanks.
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
-- Hans Bergsten <[EMAIL PROTECTED]> Gefion Software <http://www.gefionsoftware.com/> Author of O'Reilly's "JavaServer Pages", covering JSP 2.0 and JSTL 1.1 Details at <http://TheJSPBook.com/>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]