You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by frank <fr...@cloud.com> on 2010/12/07 18:59:57 UTC

class not found in tomcat's JARs (in $CATALINA_HOME/lib)

Hi Experts:
     I have read "class not found" in FAQ and "class loader howto" of 
tomcat6, unfortunately, they don't resolve my problem.
     I set CATALINA_BASE and CATALINA_HOME to my directory like:

     CATALINA_BASE=/usr/share/mydir
     CATALINA_HOME=/usr/share/mydir

     then link subdirs (conf/, bin/ ...)of tomcat6 to $CATALINA_HOME, 
the "lib/" points to /usr/share/tomcat6/lib. IMO, 
tomcat6-servlet-2.5-api.jar, tomcat6-jsp-2.1-api-6.0.26.jar, 
tomcat6-el-2.1-api-6.0.26.jar should be automatically be found since 
they are located at $CATALINA_HOME/lib/. In fact this doesn't work, I 
got errors (see paste at bottom). However, if I added full path of these 
JARs to classpath, things worked. I am puzzled, why common class loader 
doesn't get these files? thank you.


*type* Exception report

*message*

*description* _The server encountered an internal error () that 
prevented it from fulfilling this request._

*exception*

org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

*root cause*

javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:1349)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

*root cause*

java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
	java.lang.ClassLoader.defineClass1(Native Method)
	java.lang.ClassLoader.defineClass(ClassLoader.java:634)
	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
	java.net.URLClassLoader.access$000(URLClassLoader.java:73)
	java.net.URLClassLoader$1.run(URLClassLoader.java:212)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	java.lang.ClassLoader.defineClass1(Native Method)
	java.lang.ClassLoader.defineClass(ClassLoader.java:634)
	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
	java.net.URLClassLoader.access$000(URLClassLoader.java:73)
	java.net.URLClassLoader$1.run(URLClassLoader.java:212)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1431)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
	org.apache.jsp.index_jsp._jspx_meth_fmt_005fsetBundle_005f0(index_jsp.java:1361)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

*root cause*

java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TagSupport
	java.net.URLClassLoader$1.run(URLClassLoader.java:217)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	java.lang.ClassLoader.defineClass1(Native Method)
	java.lang.ClassLoader.defineClass(ClassLoader.java:634)
	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
	java.net.URLClassLoader.access$000(URLClassLoader.java:73)
	java.net.URLClassLoader$1.run(URLClassLoader.java:212)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	java.lang.ClassLoader.defineClass1(Native Method)
	java.lang.ClassLoader.defineClass(ClassLoader.java:634)
	java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
	java.net.URLClassLoader.access$000(URLClassLoader.java:73)
	java.net.URLClassLoader$1.run(URLClassLoader.java:212)
	java.security.AccessController.doPrivileged(Native Method)
	java.net.URLClassLoader.findClass(URLClassLoader.java:205)
	java.lang.ClassLoader.loadClass(ClassLoader.java:321)
	sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
	java.lang.ClassLoader.loadClass(ClassLoader.java:266)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1431)
	org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
	org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
	org.apache.jsp.index_jsp._jspx_meth_fmt_005fsetBundle_005f0(index_jsp.java:1361)
	org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

*note* _The full stack trace of the root cause is available in the 
Apache Tomcat/6.0.26 logs._



Re: class not found in tomcat's JARs (in $CATALINA_HOME/lib)

Posted by Pid <pi...@pidster.com>.
On 12/7/10 5:59 PM, frank wrote:
> 
> Hi Experts:
>     I have read "class not found" in FAQ and "class loader howto" of
> tomcat6, unfortunately, they don't resolve my problem.
>     I set CATALINA_BASE and CATALINA_HOME to my directory like:
> 
>     CATALINA_BASE=/usr/share/mydir
>     CATALINA_HOME=/usr/share/mydir
> 
>     then link subdirs (conf/, bin/ ...)of tomcat6 to $CATALINA_HOME, the
> "lib/" points to /usr/share/tomcat6/lib. IMO,
> tomcat6-servlet-2.5-api.jar, tomcat6-jsp-2.1-api-6.0.26.jar,
> tomcat6-el-2.1-api-6.0.26.jar should be automatically be found since
> they are located at $CATALINA_HOME/lib/. In fact this doesn't work, I
> got errors (see paste at bottom). However, if I added full path of these
> JARs to classpath, things worked. I am puzzled, why common class loader
> doesn't get these files? thank you.

These are not jars shipped with ASF released Tomcat.

I suspect you're using a repackaged version; I'm not sure how much
impact that will have, but thenhaven't indicated how these new
directories are referenced during an attempt to start a Tomcat instance.


p


> *type* Exception report
> 
> *message*
> 
> *description* _The server encountered an internal error () that
> prevented it from fulfilling this request._
> 
> *exception*
> 
> org.apache.jasper.JasperException: javax.servlet.ServletException:
> java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
>     org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
> 
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> 
> *root cause*
> 
> javax.servlet.ServletException: java.lang.NoClassDefFoundError:
> javax/servlet/jsp/tagext/TagSupport
>     org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
> 
>     org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
> 
>     org.apache.jsp.index_jsp._jspService(index_jsp.java:1349)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> 
> *root cause*
> 
> java.lang.NoClassDefFoundError: javax/servlet/jsp/tagext/TagSupport
>     java.lang.ClassLoader.defineClass1(Native Method)
>     java.lang.ClassLoader.defineClass(ClassLoader.java:634)
>     java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>     java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>     java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>     java.security.AccessController.doPrivileged(Native Method)
>     java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>     sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>     java.lang.ClassLoader.defineClass1(Native Method)
>     java.lang.ClassLoader.defineClass(ClassLoader.java:634)
>     java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>     java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>     java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>     java.security.AccessController.doPrivileged(Native Method)
>     java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>     sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1431)
> 
>     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
> 
>     org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
>     org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
>     org.apache.jsp.index_jsp._jspx_meth_fmt_005fsetBundle_005f0(index_jsp.java:1361)
> 
>     org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> 
> *root cause*
> 
> java.lang.ClassNotFoundException: javax.servlet.jsp.tagext.TagSupport
>     java.net.URLClassLoader$1.run(URLClassLoader.java:217)
>     java.security.AccessController.doPrivileged(Native Method)
>     java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>     sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>     java.lang.ClassLoader.defineClass1(Native Method)
>     java.lang.ClassLoader.defineClass(ClassLoader.java:634)
>     java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>     java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>     java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>     java.security.AccessController.doPrivileged(Native Method)
>     java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>     sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>     java.lang.ClassLoader.defineClass1(Native Method)
>     java.lang.ClassLoader.defineClass(ClassLoader.java:634)
>     java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
>     java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
>     java.net.URLClassLoader.access$000(URLClassLoader.java:73)
>     java.net.URLClassLoader$1.run(URLClassLoader.java:212)
>     java.security.AccessController.doPrivileged(Native Method)
>     java.net.URLClassLoader.findClass(URLClassLoader.java:205)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:321)
>     sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
>     java.lang.ClassLoader.loadClass(ClassLoader.java:266)
>     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1431)
> 
>     org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361)
> 
>     org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:128)
>     org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:66)
>     org.apache.jsp.index_jsp._jspx_meth_fmt_005fsetBundle_005f0(index_jsp.java:1361)
> 
>     org.apache.jsp.index_jsp._jspService(index_jsp.java:61)
>     org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>     org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
> 
>     org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
> 
>     org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
>     javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
> 
> *note* _The full stack trace of the root cause is available in the
> Apache Tomcat/6.0.26 logs._
> 
> 
> 


Re: class not found in tomcat's JARs (in $CATALINA_HOME/lib)

Posted by Christopher Schultz <ch...@christopherschultz.net>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Frank,

On 12/7/2010 12:59 PM, frank wrote:
>     I set CATALINA_BASE and CATALINA_HOME to my directory like:
> 
>     CATALINA_BASE=/usr/share/mydir
>     CATALINA_HOME=/usr/share/mydir

Why did you set either of these environment variables? IF you aren't
running multiple instances of Tomcat from a single base install, you
never need to set CATALINA_BASE and Tomcata auto-detects CATALINA_HOME
when you run any of the startup scripts.

>     then link subdirs (conf/, bin/ ...)of tomcat6 to $CATALINA_HOME

Okay, what is "tomcat6" and why did you have to link directories at all?
Aren't those directories already there?

>, the
> "lib/" points to /usr/share/tomcat6/lib. IMO,
> tomcat6-servlet-2.5-api.jar, tomcat6-jsp-2.1-api-6.0.26.jar,
> tomcat6-el-2.1-api-6.0.26.jar should be automatically be found since
> they are located at $CATALINA_HOME/lib/. In fact this doesn't work, I
> got errors (see paste at bottom). However, if I added full path of these
> JARs to classpath, things worked. I am puzzled, why common class loader
> doesn't get these files? thank you.

I think what you want is:

$ export CATALINA_BASE=/usr/share/mydir
$ vi ${CATALINA_BASE}/conf/server.xml
$ mkdir ${CATALINA_BASE}/webapps
$ cp mywar.war ${CATALINA_BASE}/webapps/
$ export CATALINA_HOME=/usr/share/tomcat6
$ ${CATALINA_HOME}/bin/startup.sh

That should be all you need.

As Pid mentions, it looks like you're using a re-packaged version of
Tomcat. You might want to consider reading the documentation for that
package maintainer's version of Tomcat to see how you are supposed to
run multiple instances.

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk0BPywACgkQ9CaO5/Lv0PAJwwCcCP+b7NCANSNgBQUUGdRYdOma
VBEAnjjKmH1n4OyHgDL8XdryPpcMyHnM
=SG61
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Re: class not found in tomcat's JARs (in $CATALINA_HOME/lib)

Posted by Mark Eggers <it...@yahoo.com>.
Out of curiosity, couldn't you use the information in RUNNING.txt under 
"Advanced Configuration - Multiple Tomcat Instances" to meet your requirements?

. . . just a thought.

/mde/

----- Original Message ----
From: frank <fr...@cloud.com>


Hi Experts:
    I have read "class not found" in FAQ and "class loader howto" of tomcat6, 
unfortunately, they don't resolve my problem.
    I set CATALINA_BASE and CATALINA_HOME to my directory like:

    CATALINA_BASE=/usr/share/mydir
    CATALINA_HOME=/usr/share/mydir

    then link subdirs (conf/, bin/ ...)of tomcat6 to $CATALINA_HOME, the "lib/" 
points to /usr/share/tomcat6/lib. IMO, tomcat6-servlet-2.5-api.jar, 
tomcat6-jsp-2.1-api-6.0.26.jar, tomcat6-el-2.1-api-6.0.26.jar should be 
automatically be found since they are located at $CATALINA_HOME/lib/. In fact 
this doesn't work, I got errors (see paste at bottom). However, if I added full 
path of these JARs to classpath, things worked. I am puzzled, why common class 
loader doesn't get these files? thank you.


      

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org