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

wl6.1sp2 can't find classes in WEB-INF/lib

2 views
Skip to first unread message

erric_sarra

unread,
Aug 27, 2003, 9:43:38 AM8/27/03
to

Hi,
I meet a very strange problem.

I use struts in my application.so I put struts.jar in web-inf/lib.
In the .war file, the struts.jar can be found under web-inf/lib.

my servlet configuration in web.xml is:
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>application</param-name>
<param-value>StrutsProperties</param-value>
</init-param>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>

when this .war file is deploy, the console not show any error message.
then,when i visit a jsp page that has a <html:form> tag, the console will show
the error below:
<Error> <HTTP> <[WebAppServletContext(5418530,struts,/
struts)] Servlet failed with Exception
java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm
at java.lang.ClassLoader.defineClass0(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:486)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:11
1)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:248)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:297)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:286)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:290)
at java.lang.ClassLoader.loadClass(ClassLoader.java:253)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAw
areClassLoader.java:43)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:313)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:120)
at org.apache.struts.taglib.html.FormTag.doStartTag(FormTag.java:563)
at jsp_servlet.__logon._jspService(__logon.java:137)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:265)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:304)
at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubIm
pl.java:200)
at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppSe
rvletContext.java:2495)
at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestIm
pl.java:2204)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:120)
>

note "org/apache/struts/action/ActionForm" can be found when i open struts.jar
in web-inf/lib
why weblogic can't find this class but can find the "org.apache.struts.action.ActionServlet",
these 2 classes should all be located in struts.jar

i used it in win2k,so i think it may not be connect with case sensitive.

Any one can give me some help or a link I did not found in this group.

Thanks


Deepak Vohra

unread,
Aug 27, 2003, 10:23:41 AM8/27/03
to

Are the tld files including the struts-html.tld in the web-inf directory
& specified in the web.xml deployment descriptor?

thanks,

Deepak

erric_sarra

unread,
Aug 27, 2003, 9:19:26 PM8/27/03
to

1.the struts-html.tld is in web-inf directory
2.this is part of the web.xml
===========
<taglib>
<taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>/WEB-INF/struts-template.tld</taglib-uri>
<taglib-location>/WEB-INF/struts-template.tld</taglib-location>
</taglib>
================

Emmanuel Bernard

unread,
Aug 28, 2003, 6:41:52 AM8/28/03
to

Does your struts jar contain 'dot' (except for .jar) like struts-1.1.jar ?
There was a bug in the wls7 relating to this subject.
Workaround : remove extra dots like struts-1.1.jar -> struts.jar

erric_sarra

unread,
Aug 31, 2003, 9:59:46 PM8/31/03
to

Hi, I have found something.

When I put struts.jar into weblogic classpath, then all is ok.
So I think this problem is related with classloader.

I checked my application,found that:
my ejb.jar is deploy seperately
my .war is deploy seperately
that means my ejb has a classloader, and my .war has another classloader.
then anyone can give me help on How this classloader work together
eg:when I click a page in .war, the working classloader is the classloader for
war(I guess), then in what circumstances, the classloader will be replaceed by
system default classloader?

0 new messages