Erro na execução de JSP [RESOLVIDO]

11 respostas
F

Bom dia pessoal, ao executar o método select dentro de um arquivo .java, funciona corretamente, mas ao executar em uma JSP o erro abaixo ocorre. Está faltando algo para eu configurar?

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: java.lang.NullPointerException
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:532)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

root cause

java.lang.NullPointerException
	com.fabio.json.ClienteDAO.select(ClienteDAO.java:21)
	org.apache.jsp.clienteLista_jsp._jspService(clienteLista_jsp.java:61)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:417)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.6 logs.
Apache Tomcat/7.0.6
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>CRUD</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
JSP
<%@page import="com.fabio.json.ClienteDAO"%>
<%@page import="com.fabio.json.Cliente"%>
<%
	ClienteDAO objClienteDao = new ClienteDAO();
	Cliente objCliente = new Cliente();

	String jsonCliente = objClienteDao.select(objCliente);
	out.println(jsonCliente);  
%>

Estrutura do Projeto


CRUD
-build
--classes
---com
----fabio
-----json
------Cliente.class
------ClienteDAO.class
------Conexao.class
-src
--com.fabio.json
---Cliente.java
---ClienteDAO.java
---Conexao.java
-WebContent
--WEB-INF
---web.xml
clienteLista.jsp
index.jsp

Obrigado!

11 Respostas

A

manda o codigo dessa classe, pq o erro é nessa linha.

com.fabio.json.ClienteDAO.select(ClienteDAO.java:21)
F
alanbrasil1984:
manda o codigo dessa classe, pq o erro é nessa linha.
com.fabio.json.ClienteDAO.select(ClienteDAO.java:21)

Alan, acredito que não existe erro nesta classe, pois ao executá-la em um arquivo .java, funciona perfeitamente:

ClienteDAO.java

package com.fabio.json;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;


public class ClienteDAO {
	
	private Conexao objConexao = new Conexao();
	private Statement stm = null;
	
	public String select(Cliente objClienteParametro) throws SQLException {
		List<Cliente> listaCliente = new ArrayList<Cliente>();
		String sql = "SELECT * FROM cliente";

		try {
			stm = objConexao.getConnection().createStatement();
			ResultSet rs = stm.executeQuery(sql);
			while (rs.next()) {   
				Cliente objCliente = new Cliente();
				objCliente.setId(rs.getInt("id"));
				objCliente.setNome(rs.getString("nome"));
				objCliente.setIdTipo(rs.getInt("idTipo"));
				listaCliente.add(objCliente);
			}		           
		} catch (SQLException e) {
			System.out.println("Erro: " + e.getMessage());
		} 
		stm.close();

		JSONArray jsonArray = JSONArray.fromObject(listaCliente); 
		String json = "{total:" + listaCliente.size() + ",rows:" + jsonArray + "}";
		
		return json;
	}
	
}

TesteConnection.java

package com.fabio.json;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import net.sf.json.JSONArray;

public class TesteConnection {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		try {
			System.out.println(new ClienteDAO().select(new Cliente()));
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}
Retorno
{total:10,rows:[{"id":1,"idTipo":2,"nome":"Cliente 1"},{"id":2,"idTipo":1,"nome":"Cliente 2"},{"id":3,"idTipo":1,"nome":"Cliente 3"},{"id":4,"idTipo":2,"nome":"Cliente 4"},{"id":5,"idTipo":1,"nome":"Cliente 5"},{"id":6,"idTipo":1,"nome":"Cliente 6"},{"id":7,"idTipo":2,"nome":"Cliente 7"},{"id":8,"idTipo":1,"nome":"Cliente 8"},{"id":9,"idTipo":2,"nome":"Cliente 9"},{"id":10,"idTipo":1,"nome":"Cliente 10"}]}

Obrigado pela agilidade em responder. ;-)

D

A linha 21 no seu programa é esta mesmo?

F

[quote=drigo.angelo]A linha 21 no seu programa é esta mesmo?

Sim

N

Olá fabio,

sei que não vai ajudar muito o quê eu vou sugerir, mas coloca um breakpoint no método select e debuga para identifcar todos os passos antes dessa linha 21 (desse método).

Como o pessoal disse, é nessa linha que está sendo lançado a exceção.

Faça isso e posta para a gente ver.

Abs!

F

newbcc:
Olá fabio,

sei que não vai ajudar muito o quê eu vou sugerir, mas coloca um breakpoint no método select e debuga para identifcar todos os passos antes dessa linha 21 (desse método).

Como o pessoal disse, é nessa linha que está sendo lançado a exceção.

Faça isso e posta para a gente ver.

Abs!

Estranho cara, realmente somente na execução da jsp é que o erro está nesta linha, fiz o debug e caiu no catch (“Erro ao carregar o driver”), sendo que configurei o build path corretamente:

  • Botão direito acima do projeto -> Build Path -> Configure Build Path -> Libraries -> Add External JAR’s -> selecionar o .jar -> OK
N

Oi fabio,

se o seu eclipse/netbeans estiver apontando para um JRE, coloca o driver do banco, também, no seguinte diretório:

Inicie o servidor novamente e testa para ver.

Abs!

F

newbcc:
Oi fabio,

se o seu eclipse/netbeans estiver apontando para um JRE, coloca o driver do banco, também, no seguinte diretório:

Inicie o servidor novamente e testa para ver.

Abs!

Puts, não tenho permissão para copiar arquivos dentro de C:/Arquivos de Programas. Existe outra maneira?

N

Você não está como administrador da máquina?

Não teria outra maneira. Isso que eu acabei de sugerir aconteceu exatamente comigo, problemas ao carregar o driver da base de dados. Então encontrei como solução, colocar o driver da base também nesse diretório, pelo menos para ambiente de desenvolvimento isso funcionou comigo.

Não saberia te dizer outra maneira em relação a isso. Mas pelo jeito é o mesmo problema que eu tive no passado.

Tenta fornecer essa permissão para o seu perfil de acesso. Vale à pena tentar isso pois, aparentemente, colocando o driver nesse diretório, irá resolver o seu problema.

Abs!

F

newbcc:
Você não está como administrador da máquina?

Não teria outra maneira. Isso que eu acabei de sugerir aconteceu exatamente comigo, problemas ao carregar o driver da base de dados. Então encontrei como solução, colocar o driver da base também nesse diretório, pelo menos para ambiente de desenvolvimento isso funcionou comigo.

Não saberia te dizer outra maneira em relação a isso. Mas pelo jeito é o mesmo problema que eu tive no passado.

Tenta fornecer essa permissão para o seu perfil de acesso. Vale à pena tentar isso pois, aparentemente, colocando o driver nesse diretório, irá resolver o seu problema.

Abs!

Ótimo, encontrei outra opção, copiar o .jar do mysql para a pasta lib do tomcat, funcionou perfeitamente. Muito obrigadopessoal pela atenção e pelo auxilio. Abraços!

N

Fechou fabio,

essa também agregou :slight_smile:

Abs!

Criado 7 de fevereiro de 2011
Ultima resposta 9 de fev. de 2011
Respostas 11
Participantes 4