Erro ao executar a aplicação

3 respostas
gabrielmelo

Salve rapaziada,

Estou tentando configurar um projeto no eclipse, mas está dando pau e não estou conseguindo resolver. O Problema é o seguinte, quando tento executar a aplicação esta dando esse erro:
org.apache.jasper.JasperException: /root/../arquivos/includes/cabecalho.jsp(2,0) The value for the useBean class attribute portal.dao.PessoaDAO is invalid.
	at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
	at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
	at org.apache.jasper.compiler.Generator$GenerateVisitor.visit(Generator.java:1229)
	at org.apache.jasper.compiler.Node$UseBean.accept(Node.java:1178)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
	at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2435)
	at org.apache.jasper.compiler.Node$IncludeDirective.accept(Node.java:656)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
	at org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2411)
	at org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2417)
	at org.apache.jasper.compiler.Node$Root.accept(Node.java:495)
	at org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2361)
	at org.apache.jasper.compiler.Generator.generate(Generator.java:3440)
	at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:231)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:347)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:327)
	at org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
	at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:592)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
	at java.lang.Thread.run(Unknown Source)
A classe PessoaDAO extende BaseDAO que é o seguinte:
public class BaseDAO {

    protected Connection cn;

    public BaseDAO() throws Exception {
        
        Class.forName("com.mysql.jdbc.Driver");    

        //Conexão Banco Local.
       String url = "jdbc:mysql://localhost/db_aed";
       String user = "xxxx";
       String pass = "xxxxx";
        
        cn = DriverManager.getConnection(url, user, pass);
    }

    public Connection getConnection() {
        return this.cn;
    }

    @Override
    protected void finalize() throws Throwable {
        super.finalize();
        if (!this.cn.isClosed()) {
            this.cn.close();
        }
    }
}

já importei o mysql-connector-java-3.1.11-bin.jar para o projeto e não funciona, alguém ja passou por algo parecido ?

Valew.

3 Respostas

lordtiago
id=node <jsp:useBean type=mypackage.NodeBean scope=session/>

em vez de

id=node <jsp:useBean class=mypackage.NodeBean scope=session/>

Na verdade se resume a classe (neste caso NodeBean) sendo instanciável. Se você usar class =, então a classe deve ter um construtor padrão. Se o bean já existe no âmbito dado, então você pode usar type = apenas uma referência e exemplo, sem ter que dar-lhe um construtor padrão. Entendeu?

A mensagem “O valor para o atributo classe useBean …” significa que o construtor padrão não é válido …
Você deve simplesmente declarar construtor padrão para bean (público) e bom trabalho!

gabrielmelo
minha jsp cabecalho.jsp é essa:
<jsp:useBean id="dao" class="aed.dao.PessoaDAO"/>

<div id="corpo">
    <!--<div>
        <img id="imagem_topo" src="../arquivos/img/img_topo.jpg"/>
    </div>-->
    <div>
        <div id="top_center"></div>
        <div id="top_right"></div>
       
    </div>
    <div id="identificacao">
        <%

            if (session.getAttribute("usuario")==null){

                out.print("<b>Usuário Desconhecido</b>");

            }else{            	
				try {	
	                //out.print("Usuário: " + dao.consultaPessoa(session.getAttribute("usuario")));
	                String a = session.getAttribute("usuario").toString();
	                out.print("Bem vindo(a), " + dao.consultaPessoa(a));
				} catch	(Exception e) {
					e.printStackTrace();
				}
            }


        %>
    </div>
    <!--<div id="pastas">
        <img src="../arquivos/img/pastas.jpg" id="fotoPastas"/>
    </div>-->
</div>
A classe PessoaDAO já possui um construtor :
public class PessoaDAO extends BaseDAO {

    private String SQL = "";

    public PessoaDAO() throws Exception {
    }

   public String consultaPessoa(String cpf) throws Exception{
    	try {

	        SQL = "SELECT no_pessoa FROM tb_pessoa where nr_cpf=?";
	        PreparedStatement ps = this.cn.prepareStatement(SQL);
	        ps.setString(1, cpf);
	        ResultSet rs = ps.executeQuery();
	        rs.next();
	        
	        return rs.getString("no_pessoa");
		
    	} catch (Exception e) {
			e.printStackTrace();
		}        

    }

}
lordtiago

troque o class pelo type.

Criado 30 de agosto de 2010
Ultima resposta 30 de ago. de 2010
Respostas 3
Participantes 2