You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Scott Anderson <sa...@ttm.com> on 2001/04/24 17:59:01 UTC

Update: Catalina classloader problem - permissions

I'm getting a "class not found" error on a webapp that obviously has the
class in it's WEB-INF/lib directory. I've edited out most of the stack
trace for the sake of brevity. This is from a standard installation of
the Turbine TDK which has had none of its default configuration changed:

A Servlet Exception Has Occurred
Exception Report:

javax.servlet.ServletException: Wrapper cannot find servlet class
org.apache.turbine.Turbine or a class it depends on
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java,
Compiled Code)
[...]

Root Cause:

java.lang.ClassNotFoundException: org.apache.turbine.Turbine
	at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java,
Compiled Code)
[...]



Here's the log file. Note the "Adding 'file:
/WEB-INF/lib/turbine-2.1-dev-unreleased.jar'" line. This is the jar file
containing the Turbine.class file that the classloader is complaining
about.

2001-04-24 10:31:57 StandardLoader[]: Reloading checks are enabled for
this Context
2001-04-24 10:31:57 Manager[]: Seeding random number generator class
java.security.SecureRandom
2001-04-24 10:31:57 Manager[]: Seeding of random number generator has
been completed
2001-04-24 10:31:57 ContextConfig[]: Missing application web.xml, using
defaults only
2001-04-24 10:31:57 StandardWrapper[:default]: Loading container servlet
default
2001-04-24 10:31:58 default: init
2001-04-24 10:31:58 StandardWrapper[:invoker]: Loading container servlet
invoker
2001-04-24 10:31:58 invoker: init
2001-04-24 10:31:58 jsp: init
2001-04-24 10:31:58 Internal Error: File /WEB-INF/web.xml not found
2001-04-24 10:31:58 

2001-04-24 10:31:58 StandardHost[localhost]: Deploying web application
at context path /foo from URL file:/usr/local/dev/tdk/webapps/foo
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/jta1.0.1.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/village-1.5.1-dev.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/xmlrpc.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/xalan-1.2.1.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/junit-3.2.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/jakarta-regexp-1.3-dev.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/velocity-1.0b2-dev.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/xerces-1.3.0.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/log4j-1.0.4.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/jndi-1.2.1.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/log4j-core-1.0.4.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/jdbc2_0-stdext.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/turbine-2.1-dev-unreleased.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/mm.mysql-2.0.4.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/hsql.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/mail-1.2.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/ecs-1.4.1.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/jdbc-se2.0.jar'
2001-04-24 10:31:58 StandardLoader[/foo]:  Adding 'file:
/WEB-INF/lib/activation-1.0.1.jar'
2001-04-24 10:31:58 Manager[/foo]: Seeding random number generator class
java.security.SecureRandom
2001-04-24 10:31:58 Manager[/foo]: Seeding of random number generator
has been completed
2001-04-24 10:31:58 ContextConfig[/foo]: Configured an authenticator for
method BASIC
2001-04-24 10:31:58 StandardWrapper[/foo:default]: Loading container
servlet default
2001-04-24 10:31:58 default: init
2001-04-24 10:31:58 StandardWrapper[/foo:invoker]: Loading container
servlet invoker
2001-04-24 10:31:58 invoker: init
2001-04-24 10:31:59 jsp: init
2001-04-24 10:32:14 StandardWrapper[/foo:foo]: Marking servlet foo as
unavailable
2001-04-24 10:32:14 ApplicationDispatcher[/foo] Allocate exception for
servlet foo
javax.servlet.ServletException: Wrapper cannot find servlet class
org.apache.turbine.Turbine or a class it depends on
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java,
Compiled Code)
[...]
----- Root Cause -----
java.lang.ClassNotFoundException: org.apache.turbine.Turbine
	at
org.apache.catalina.loader.StandardClassLoader.loadClass(StandardClassLoader.java,
Compiled Code)
[...]


Note that this setup had been working for many days. Yesterday, in
between invocations of Catalina (with NO changes made by me -- yeah, I
know, SOMETHING had to change, but I swear it wasn't me :-) I started to
get the above with every servlet invocation. No files had been changed
in the TDK directory whatsoever (I have the 'find' command output to
prove it). Reverting to a known good backup of the whole TDK directory
from the day before didn't change this behaviour. Changing JDKs on the
off-chance that a library file somewhere got hosed made no difference
either. Installing a brand new copy of the TDK made no difference. I've
checked all of my environment variables. No joy there either.

Today I discovered that running Catalina as root (which I didn't have to
do before) gets rid of the problem. The really bizarre part is that the
username used to run it under before owns ALL of the files in the TDK
directory, and all of the files are read/write for that user.

Any ideas?

Thanks, 
-scott