Problem with InvocationTargetException error

So I'm using the company standard struts framework and I've created an external class that is going to implement httpunit to perform some quick web automation. This external class is called in action class like such

webscrape ws =new webscrape(frm,"http://www.google.com");

ws.doScrape();

and the class itself looks like:

import junit.framework.*;

import com.telus.acrportal.actionform.ACRForm;

import com.meterware.httpunit.*;

import java.util.*;

publicclass webscrapeextends TestCase{

String sms_url;

ACRForm sms_frm;

public webscrape(ACRForm sms_frm,String sms_url ){

this.sms_url = sms_url;

this.sms_frm = sms_frm;

}

publicvoid doScrape ()throws Exception{

WebConversation wc =new WebConversation();

//WebResponse resp = wc.getResponse( "http://nna.tsl.telus.com/event/admin/event_send.asp" );

WebResponse resp = wc.getResponse("http://www.google.com" );

WebForm form = resp.getForms()[0];

form.setParameter("q","Disney");

form.submit();

}

}

and finally the error looks like this:

[DEBUG] Jul 23 2007 01:33:41PM - findException: look locallyfor java.lang.reflect.InvocationTargetException

[DEBUG] Jul 23 2007 01:33:41PM - findException: look globallyfor java.lang.reflect.InvocationTargetException

[DEBUG] Jul 23 2007 01:33:41PM - findException: look locallyfor java.lang.Exception

[DEBUG] Jul 23 2007 01:33:41PM - findException: look globallyfor java.lang.Exception

[DEBUG] Jul 23 2007 01:33:41PM - findException: look locallyfor java.lang.Throwable

[DEBUG] Jul 23 2007 01:33:41PM - findException: look globallyfor java.lang.Throwable

[DEBUG] Jul 23 2007 01:33:41PM - findException: look locallyfor java.lang.Object

[DEBUG] Jul 23 2007 01:33:41PM - findException: look globallyfor java.lang.Object

[WARN] Jul 23 2007 01:33:41PM - Unhandled exception

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.ttttt.frameworkslight.action.BaseAction.execute(BaseAction.java:80)

at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)

at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)

at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)

at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)

at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.customtags.resources.DbbTableFilter.doFilter(DbbTableFilter.java:69)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.resources.LoginFilter.doFilter(LoginFilter.java:208)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)

at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)

at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)

at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

Caused by: java.lang.NoClassDefFoundError: junit/framework/TestCase

at java.lang.ClassLoader.defineClass0(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:539)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)

at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:480)

at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:182)

at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:61)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:224)

at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:41)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at com.ttttt.project.dao.ACRDao.postSMS(ACRDao.java:723)

at com.ttttt.project.action.ACRAction.addNew(ACRAction.java:327)

... 33 more

[WARN] Jul 23 2007 01:33:41PM - Exception from exceptionCommand'servlet-exception'

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.ttttt.frameworkslight.action.BaseAction.execute(BaseAction.java:80)

at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)

at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)

at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)

at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)

at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.customtags.resources.DbbTableFilter.doFilter(DbbTableFilter.java:69)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.resources.LoginFilter.doFilter(LoginFilter.java:208)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)

at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)

at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)

at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

Caused by: java.lang.NoClassDefFoundError: junit/framework/TestCase

at java.lang.ClassLoader.defineClass0(Native Method)

at java.lang.ClassLoader.defineClass(ClassLoader.java:539)

at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)

at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:480)

at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:182)

at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:61)

at java.lang.ClassLoader.loadClass(ClassLoader.java:289)

at java.lang.ClassLoader.loadClass(ClassLoader.java:235)

at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:224)

at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:41)

at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:302)

at com.ttttt.project.dao.ACRDao.postSMS(ACRDao.java:723)

at com.ttttt.project.action.ACRAction.addNew(ACRAction.java:327)

From debugging I can tell it fails in the action class before it even creates the instance of the webscrape class. Any idea on where to start on this one?

[11254 byte] By [Piersa] at [2007-11-27 11:27:57]
# 1

oh I should mention that google reference etc is just a place holder until I get this actually operating then I'll point it at the site I'm actually looking for.

and I copied the wrong code for the doScrape method it should look like this:

public void doScrape () throws Exception{

WebConversation wc = new WebConversation();

//WebResponse resp = wc.getResponse( "http://nna.tsl.telus.com/event/admin/event_send.asp" );

WebResponse resp = wc.getResponse(sms_url);

WebForm form = resp.getForms()[0];

form.setParameter("q","Disney");

form.submit();

Message was edited by:

Piers

Piersa at 2007-7-29 16:19:05 > top of Java-index,Java Essentials,Java Programming...
# 2

You're missing junit from your classpath.

Edit:

And by the way, why are you extending TestCase when you're not testing anything?

Message was edited by:

dwg

dwga at 2007-7-29 16:19:05 > top of Java-index,Java Essentials,Java Programming...
# 3

blast!! you beat me too it.

I just noticed that was in there (sloppy habit of copying from elsewhere, oops) and I removed it.

Now it creates the instance fine and executes the method, however when I follow the debugger it can't create the WebConversation and it gives me a similar error, this time I've definately got the httpunit included

Exception Class: java.lang.reflect.InvocationTargetException

Message: null

java.lang.reflect.InvocationTargetException

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:324)

at com.ttttt.frameworkslight.action.BaseAction.execute(BaseAction.java:80)

at org.apache.struts.chain.commands.servlet.ExecuteAction.execute(ExecuteAction.java:53)

at org.apache.struts.chain.commands.AbstractExecuteAction.execute(AbstractExecuteAction.java:64)

at org.apache.struts.chain.commands.ActionCommandBase.execute(ActionCommandBase.java:48)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.commons.chain.generic.LookupCommand.execute(LookupCommand.java:304)

at org.apache.commons.chain.impl.ChainBase.execute(ChainBase.java:190)

at org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:280)

at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1858)

at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:459)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1072)

at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:465)

at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:28)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.customtags.resources.DbbTableFilter.doFilter(DbbTableFilter.java:69)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at com.ttttt.frameworkslight.resources.LoginFilter.doFilter(LoginFilter.java:208)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at org.securityfilter.filter.SecurityFilter.doFilter(SecurityFilter.java:188)

at weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)

at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6987)

at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)

at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)

at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3892)

at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2766)

at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:224)

at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:183)

Caused by: java.lang.NoClassDefFoundError: com/meterware/httpunit/WebConversation

at com.ttttt.acrportal.action.webscrape.doScrape(webscrape.java:22)

at com.ttttt.acrportal.dao.ACRDao.postSMS(ACRDao.java:724)

at com.ttttt.acrportal.action.ACRAction.addNew(ACRAction.java:327)

... 33 more

Piersa at 2007-7-29 16:19:05 > top of Java-index,Java Essentials,Java Programming...
# 4

The Jar that contains the following:

com/meterware/httpunit/WebConversation

is missing from your classpath.

Please learn how to interpret exception stack traces, it clearly states

Caused by: java.lang.NoClassDefFoundError: com/meterware/httpunit/WebConversation

meaning it can't find the relevant class.

dwga at 2007-7-29 16:19:05 > top of Java-index,Java Essentials,Java Programming...
# 5

touche.

I suppose I never looked for that because I added it to the eclipse build path and I never had a problem with it when adding other .jars (i.e. mssqlserver drivers)

Piersa at 2007-7-29 16:19:05 > top of Java-index,Java Essentials,Java Programming...