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
thanks,
Deepak
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?