Erro Struts2

5 respostas
S

Boa tarde galera, tudo beleza?

Estou aprendendo a utilizar Struts2. Pretendo de inicio acessar o banco e trazer umas informações de umas tabelas e montar meu JSP. Assisti
uns tutoriais utilizando Struts2 + boxSQL e implementei, porém estou tendo um erro que não explicar o que porque.

Eu sou iniciante em Java e JavaEE, mas decidi criar uma aplicação do zero pra aprender melhor. Podem me ajudar por favor?

Vou colocar todas as informações:

Erro:
Nov 5, 2007 2:02:43 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet default threw exception
java.lang.NoClassDefFoundError: com/squishers/DAO/MembrosDAO
	at com.squishers.actions.MembrosAction.<init>(MembrosAction.java:10)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at java.lang.Class.newInstance0(Unknown Source)
	at java.lang.Class.newInstance(Unknown Source)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:123)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:154)
	at com.opensymphony.xwork2.ObjectFactory.buildBean(ObjectFactory.java:143)
	at com.opensymphony.xwork2.ObjectFactory.buildAction(ObjectFactory.java:113)
	at com.opensymphony.xwork2.DefaultActionInvocation.createAction(DefaultActionInvocation.java:275)
	at com.opensymphony.xwork2.DefaultActionInvocation.init(DefaultActionInvocation.java:365)
	at com.opensymphony.xwork2.DefaultActionInvocation.access$000(DefaultActionInvocation.java:38)
	at com.opensymphony.xwork2.DefaultActionInvocation$1.doProfiling(DefaultActionInvocation.java:83)
	at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
	at com.opensymphony.xwork2.DefaultActionInvocation.<init>(DefaultActionInvocation.java:74)
	at com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:189)
	at org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:41)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:494)
	at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:419)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

Essa é a tela de erro que estou tendo no browser
[img]http://www.squishers.com/spdio/erro.JPG[/img]

Esssa é a estrutura do projeto:
[img]http://www.squishers.com/spdio/estrutura.JPG[/img]

Classe MembrosAction
package com.squishers.actions;

import java.util.List;

import com.squishers.DAO.MembrosDAO;
import com.squishers.beans.Membros;

public class MembrosAction {

	MembrosDAO mDAO = new MembrosDAO();
	
	private List<Membros> membros;
	
	public String execute(){
		setMembros(mDAO.getMembro());
		return "sucess";
	}

	public final List<Membros> getMembros() {
		return membros;
	}

	public final void setMembros(List<Membros> membros) {
		this.membros = membros;
	}
	

}
Classe Membros
package com.squishers.beans;

public class Membros {

	private String nome;
	private String nick;
	private String msn;
	private int icq;
	private String configPC;
	private String games;
	
	public Membros(){
		
	}
	
	public Membros(String nome, String nick, String msn, int icq, String configPC, String games) {
		super();
		this.nome = nome;
		this.nick = nick;
		this.msn = msn;
		this.icq = icq;
		this.configPC = configPC;
		this.games = games;
	}
	
	public final String getNome() {
		return nome;
	}
	public final void setNome(String nome) {
		this.nome = nome;
	}
	public final String getNick() {
		return nick;
	}
	public final void setNick(String nick) {
		this.nick = nick;
	}
	public final String getMsn() {
		return msn;
	}
	public final void setMsn(String msn) {
		this.msn = msn;
	}
	public final int getIcq() {
		return icq;
	}
	public final void setIcq(int icq) {
		this.icq = icq;
	}
	public final String getConfigPC() {
		return configPC;
	}
	public final void setConfigPC(String configPC) {
		this.configPC = configPC;
	}
	public final String getGames() {
		return games;
	}
	public final void setGames(String games) {
		this.games = games;
	}
}
Classe MembrosDAO
package com.squishers.DAO;

import java.util.ArrayList;
import java.util.List;

import org.boxsql.BoxSQL;

import com.squishers.beans.Membros;

public class MembrosDAO {

	public List<Membros> getMembro() {
		BoxSQL		box 	= new BoxSQL();
		List<Membros> membros = box.getList("ListarMembros.sql", Membros.class);
		box.release();
		return membros;
	}
}
ListarMembros.sql
SELECT 
	*
FROM
	MEMBROS
ORDER BY
	NICK
boxSQL.properties
box.connectionType=jdbc
box.pathBase=/com/squishers/resources
jdbc.url=jdbc:jtds:sqlserver://localhost:1433/squishers
jdbc.driver=net.sourceforge.jtds.jdbc.Driver
jdbc.user=squishers
jdbc.password=charneuba
Struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="struts-default.xml" />
	
	<package name="default" extends="struts-default">
	 	<action name="Membros" class="com.squishers.actions.MembrosAction">
	 		<result>membros.jsp</result>	
	 	</action>
	</package>
</struts>
index.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<s:head theme="ajax" debug="true"/>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>SQS - Squishers Clan</title>
</head>
<body>
<div align="center">
	<div>Squishers Page</div>
	<s:tabbedPanel id="Tabs" cssStyle="font-family: Verdana; font-size: 12px; width: 70%;">
		
		<s:div label="Home" href="home.jsp" theme="ajax" refreshOnShow="true" executeScripts="true"
			cssStyle="display: none; font-weight: normal; padding: 10px; text-align: left;">Home</s:div>
		
		<s:url id="membrosUrl" action="Membros"/>
		<s:div label="Membros" href="%{membrosUrl}" theme="ajax" refreshOnShow="true" executeScripts="true" 
			cssStyle="display: none; font-weight: normal; fonta-family: Verdana; font-size: 11px;  padding: 10px; text-align: left;">Membros</s:div>
		
		<s:div label="Historia" href="historia.jsp" theme="ajax" refreshOnShow="true" executeScripts="true"
			cssStyle="display: none; font-weight: normal; fonta-family: Verdana; font-size: 11px;  padding: 10px; text-align: left;">História</s:div>
		
		<s:div label="Forum" theme="ajax">Forum</s:div>
		
		<s:div label="SQSNet" theme="ajax">SQSNet</s:div>
		
		<s:div label="Game" theme="ajax">O Game</s:div>
		
		<s:div label="Links & Downloads" theme="ajax">Links e Downlodas</s:div>
	</s:tabbedPanel>
</div>
</body>
</html>
membros.jsp
<%@ taglib prefix="s" uri="/struts-tags" %>
<table border="0" align="center">
	<tr>
		<td style="padding-bottom: 10px; padding-right: 20px;">
			<table cellspacing="0" cellpadding="5" border="1" class="blockTable">
				<tr>
					<th colspan="4" align="center">Membro</th>
				</tr>
				<tr>
					<th>Nome: </th>
					<th>Nick: </th>
					<th>MSN: </th>
					<th>ICQ: </th>
					<th>Config PC: </th>
					<th>Games: </th>
				</tr>
				<s:iterator value="membros">
					<tr>
						<td><s:property value="nome"/></td>
						<td><s:property value="nick"/></td>
						<td><s:property value="msn"/></td>
						<td><s:property value="icq"/></td>
						<td><s:property value="configPC"/></td>
						<td><s:property value="game"/></td>
					</tr>
				</s:iterator>
			</table>
		</td>
	</tr>
</table>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SquishersPage</display-name>
  
  <filter>
  	<filter-name>struts2</filter-name>
 	<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  </filter>
  
  <filter-mapping>
  	<filter-name>struts2</filter-name>
  	<url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

Grato

5 Respostas

xjcd

Companheiro,

Pelo seu erro “java.lang.NoClassDefFoundError” está faltando dentro da pasta WEB-INF/lib um jar contendo as classes de sua aplicação. O Struts2 não está conseguindo achar suas classes e dá erro.

S

Como assim?

Estou utilizando o eclipse, e na configuração do projeto o Build Path esta configurado.

Agora existe a necessidade de um montar um jar com minhas classes e jogar dentro de lib?

Eu sou ignorante em java, me desculpa questionar isso, mas acho que não precisa por tudo que ja li.

Obrigado pela ajuda.

xjcd

Precisa sim, pois dentro do eclipse vai funcionar, mas quando tiver rodando no brownser, o tomcat ou qualquer outro containner web vai procurar as classes dentro do WEB-INF/lib.

S

UP!

Help-me! :smiley:

feliperod

Cara,

Já conseguiu resolver esse erro?
Se não procure saber se a classe MembrosDAO está compilando normalmente. A mensagem diz que ela não foi encontrada, mas ao meu ver esta tudo certo no seu projeto.

Abração

Criado 5 de novembro de 2007
Ultima resposta 5 de dez. de 2007
Respostas 5
Participantes 3