Erro ao instanciar classe Action

2 respostas
hecatoncheires

Ola pessoal.
Estou atualmente aprendendo struts em um estagio, e fiquei empacado com o seguinte erro:

[24/11/08 12:53:37:709 BRST] 64d79a48 WebGroup      I SRVE0181I: [ABCD-Teste-web] [/ABCD-Teste-web] [Servlet.LOG]: action: Error creating Action instance for path '/lista', class name 'br.com.bradseg.abcd.teste.controller.action.ListaAction': java.lang.VerifyError: (class: br/com/bradseg/abcd/teste/controller/action/ListaAction, method: execute signature: (Lorg/apache/struts/action/ActionMapping;Lorg/apache/struts/action/ActionForm;Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)Lorg/apache/struts/action/ActionForward;) Incompa
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Class.java(Compiled Code))
	at org.apache.struts.action.ActionServlet.processActionCreate(ActionServlet.java:1632)
	at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1577)
	at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:492)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
	at com.ibm.ws.webcontainer.servlet.StrictServletInstance.doService(StrictServletInstance.java:110)
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet._service(StrictLifecycleServlet.java:174)
	at com.ibm.ws.webcontainer.servlet.IdleServletState.service(StrictLifecycleServlet.java:313)
	at com.ibm.ws.webcontainer.servlet.StrictLifecycleServlet.service(StrictLifecycleServlet.java:116)
	at com.ibm.ws.webcontainer.servlet.ServletInstance.service(ServletInstance.java:283)
	at com.ibm.ws.webcontainer.servlet.ValidServletReferenceState.dispatch(ValidServletReferenceState.java:42)
	at com.ibm.ws.webcontainer.servlet.ServletInstanceReference.dispatch(ServletInstanceReference.java:40)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.handleWebAppDispatch(WebAppRequestDispatcher.java:983)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.dispatch(WebAppRequestDispatcher.java:564)
	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:200)
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForward(WebAppInvoker.java:119)
	at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleInvocationHook(WebAppInvoker.java:276)
	at com.ibm.ws.webcontainer.cache.invocation.CachedInvocation.handleInvocation(CachedInvocation.java:71)
	at com.ibm.ws.webcontainer.srp.ServletRequestProcessor.dispatchByURI(ServletRequestProcessor.java:182)
	at com.ibm.ws.webcontainer.oselistener.OSEListenerDispatcher.service(OSEListener.java:334)
	at com.ibm.ws.webcontainer.http.HttpConnection.handleRequest(HttpConnection.java:56)
	at com.ibm.ws.http.HttpConnection.readAndHandleRequest(HttpConnection.java:618)
	at com.ibm.ws.http.HttpConnection.run(HttpConnection.java:439)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:672)

Aparentemente o servidor nao consegue instanciar um objeto da classe ListaAction, e acusa algum tipo incompatibilidade com a assinatura do metodo execute, mas a mensagem esta cortada e nao da pra saber oq exatamente esta acontecendo.

segue o codigo da classe:

public class ListaAction extends Action {
	
	private static final String SUCCESS = "listaProdutos";
	private static final ProdutoBusinessDelegate delegate = ProdutoBusinessDelegate.getInstance();

	public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {

		ActionErrors errors = new ActionErrors();
		ActionForward forward = new ActionForward(); // return value
		br.com.bradseg.abcd.teste.controller.form.listaProdutoForm listaProdutoForm = (br.com.bradseg.abcd.teste.controller.form.listaProdutoForm) form;

		try {

			listaProdutoForm.setLista(delegate.listarProdutos());

		} catch (Exception e) {}

			forward = mapping.findForward(SUCCESS);

		return (forward);

	}
}

2 Respostas

finotti

Benvindo ao fórum!
acho que o problema está no retorno do seu método execute.
tente assim:

return mapping.findForward(SUCCESS);

confira também o mapeamento da sua action no struts-config.xml

hecatoncheires

Obrigado por responder finotti.

Infelismente o problema nao e esse. Acredito tambem que nao seja o mapeamento, pois a mensagem de erro deixa claro que a classe foi encontrada, mas nao pode ser instanciada.

Apenas para garantir estou colocando o struts-config, se alguem achar um erro nele por favor indique.

<struts-config>
	<!-- Form Beans -->
	<form-beans>
		<form-bean name="listaProdutoForm" type="br.com.bradseg.abcd.teste.controller.form.listaProdutoForm">
		</form-bean>
		<form-bean name="ProdutoForm" type="br.com.bradseg.abcd.teste.controller.form.ProdutoForm">
		</form-bean>
		
	</form-beans>

	<!-- Global Exceptions -->
	<global-exceptions>
		
	</global-exceptions>


	<!-- Global Forwards -->
	<global-forwards>
		<forward name="fwd-global-index" path="/index.do" />
		
	</global-forwards>

	<!-- Action Mappings -->
	<action-mappings>
		<action name="listaProdutoForm" path="/lista" scope="request" type="br.com.bradseg.abcd.teste.controller.action.ListaAction">
		<forward name="listaProdutos" path="lista.view"/>
		</action>

	<action path="/index" forward="index.view" />
	</action-mappings>
		
			
	<!-- Message Resources -->
	
	<plug-in className="org.apache.struts.tiles.TilesPlugin">
		<set-property property="definitions-config" value="/WEB-INF/config/tiles-defs.xml" />
		<set-property property="moduleAware" value="true" />
		<set-property property="definitions-parser-validate" value="true" />
	</plug-in>

</struts-config>
Criado 24 de novembro de 2008
Ultima resposta 24 de nov. de 2008
Respostas 2
Participantes 2