Por favor, me ajudem! NULLPOINTEREXCEPTION

15 respostas
L
está dando o seguinte erro :
type Exception report
message 
description The server encountered an internal error () that prevented it from fulfilling this request.
exception 

java.lang.NullPointerException
at br.com.leo.web.Pass.doPost(Pass.java:25)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                     ""           ""                ""
                   ""        ""             ""                   ""
Meu codigo jsp esta assim:
<%@ page import="java.util.Calendar" %>
<%@ page language="java"%>

<html>
<head>
<title> - Sistema interno de controle de horas</title>
</head>
<body>
<font color="GREY" size=3 face="verdana">
    Sistema interno de controle de horas<br></FONT><br>

   <font color="GREY"  size=1 face="verdana">
      Faça seu login abaixo:</font>
    
   <table border="0" cellpadding="5" cellspacing="5">
     <form method="POST"  action=/servlets/pass >  
      <tr>
      <td><font color="GREY" size=0  face="verdana">Login:    </td>          <td> 
<input type="text" name="login" maxlength="8"></font></td>
    </tr>
	
	<tr>
	   <td><font color="GREY" size=0 face="verdana">Password:</td>            <td>
<input type="password" name="password" maxlength="8"></font></td>
        </tr>
		
    <tr>
		<td><input type="submit" value="OK"></td>
	</tr>
    </form>
</table>
</body>
e o pass q é a minha validação fica assim:
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.SQLException;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;

public class Pass extends HttpServlet
 {
   public void doPost(HttpServletRequest request,HttpServletResponse     response)
  	throws ServletException, IOException 
   {
	String login = request.getParameter("login");
	String password = request.getParameter("password");
  	Connection con  = null;
	Statement stmt =null;
	ResultSet rs  = null;
  
    try
     {
        con = Banco.getConnection();
	stmt = con.createStatement();
	rs = stmt.executeQuery("select * from tts_user");
    
	
	try
	 {
		while(rs.next())
	    {
		String name= rs.getString("usr_login_nm");	
		
		//aqui faço um if para validar o acesso rediricionando 
                  // a pagina usando response.sendRedirect("XXX");
	    }
	 }
	 catch(Exception e){}
	}
		catch(SQLException e){} 
	   
	finally
	 {
	   try{
			rs.close();
			con.close();
	   }
	   catch(Exception e){}
     }

   }
}
e o meu banco.java q vai fazer a conexao com o banco de dados ficou assim:
package br.com.leo.web;
import javax.servlet.http.*;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DriverManager;

public class Banco extends HttpServlet
{
	public static Connection getConnection() 
	  {  
		try
		 {
 Class.forName("oracle.jdbc.driver.OracleDriver");
   return DriverManager.getConnection("jdbc:oracle:thin:@oracle:XXXXX:AAAA", "BBBB", "CCCCC");
		 }
		   catch (ClassNotFoundException e)
			 {
			  e.printStackTrace();
			  System.out.println("erro 1111");
			 } 
		   catch (SQLException e1)
			 {
			  e1.printStackTrace();
			   }
		return null;
			
		}
	
	 
	}

eu rodo e dá aquele msg de erro lá em cima.....e no console eu tentei ver aonde estava aparecendo um errro, ele imprimia o erro da exception ClassNotFoundException ............
Tentei fazer varias tipos de tratamento.....inicializar os objetos sem"valor" e nada......
por favor, me ajudem a resolver isto.
obrigado!!

15 Respostas

cancao

A linha 25 do codigo de Pass que vc postou está vazia então vou supor que vc modificou antes de colar aqui. O erro tem todo jeito de ser na classe Banco. Já experimentou olhas as stacks que aparecem no console?! Elas devem indicar o erro na criação da Connection ou no carregamento do driver. Como há erro, o retorno do metodo é null, então, na linha…

stmt = con.createStatement();

… como con é null a NullPointer que vc está recebendo é lançada.

Até.

L

a linha 25 é STMT = CON.CREATESTATEMENT();

Connection con  = null;
Statement stmt  =null ;
ResultSet rs  = null;
  
    try
    {
    con = Banco.getConnection();
	stmt = con.createStatement();
	rs = stmt.executeQuery("select * from tts_user");

nesta parte, há erro?!?!
no meu console aparece o erro q eu “peço” pra imprimir do ClassNotFoundException…

Bani

Ele não está encontrando a classe do driver do banco. Colocou ela no classpath ou em algum diretório lib da sua aplicação?

L

sim…
eu até testei com outros aplicativbos e rodou e “pegou” os dados numa boa!!!

Bani

Olha… se está caindo no catch em que dá ClassNotFoundException esta aplicação não está encontrando a classe… talvez outras estejam, mas essa não está…
Pode ser também que o nome dela esteja errado.

L

o pior é que esta “igualzinho”!!!
peguei esta minha mesma aplicação e troquei algumas funcoes para testar…o getConnection eu não modifiquei…
criei umas caixas de texto para o cara digitar e conferir com a senha…Deu certo!!!
putz, tá tudo muito igual, no mesmo pacote e ainda da erro!!

:?::?::?:uma pergunta, eu tenho q mexer no xml quando eu crio uma aplicação .java q vai iteragir com o servlet? :?:

Bani

Depende de como está o xml… mas o seu problema não é de xml.
Já colocou o classes18.zip (ou algo parecido com isso) no diretório lib da aplicação?

L

sim…criei uma past lib no mesmo nivel do meu web.xml e coloquei a classe12.zip

cancao

Leo, desculpe se as afirmações parecerem meio bobas. Mas, como o problema tá meio empirico…
:arrow: O classes12.zip deve fica em TOMCAT_HOME/webapps/suaAplicacao/WEB-INF/lib/
:arrow: O diretorio WEB-INF deve ser escrito com letras maisculas mesmo.
:arrow: Reestarte o tomcat depois de fazer alterações nas libs da sua aplicação.

Se isso não funcionar, tente colocar o classes12.zip em TOMCAT_HOME/commons/lib.

Até.

L

meu classe12.zip esta neste diretório todo…C:Arquivos de programasApache GroupTomcat 4.1webappsservletsWEB-INFlib

o q vc me disse, esta certo, mas ainda vou tentar mudar algumas coisas pra ver c dá certo…

cancao

“Leo”:
meu classe12.zip esta neste diretório todo…C:Arquivos de programasApache GroupTomcat 4.1webappsservletsWEB-INFlib

o q vc me disse, esta certo, mas ainda vou tentar mudar algumas coisas pra ver c dá certo…


Antes uma dica: quando for colocar esse tipo barra () no forum, coloque-a duplicada para que ela apareça. :wink:

Sobre seu problema, eu li em algum lugar certa vez que era não recomendado instalar o tomcat em diretorios que contivessem espaços no nome. Então, tenta reinstalar o tomcat num diretorio como c:\tomcat que é mais garantido.

Até.

Rafael_Steil

Nao, voce pode instalar o tomcat em qualquer diretori oque funciona sem problemas.

Rafael

caiofilipini

Inclusive, o diretório padrão da instalação do Tomcat no Windows (pelo menos na versão 4.1.27) é C:\Arquivos de programas\Apache Group\Tomcat 4.1.

cancao

“caiofilipini”:

Inclusive, o diretório padrão da instalação do Tomcat no Windows (pelo menos na versão 4.1.27) é C:Arquivos de programasApache GroupTomcat 4.1.

Acho que isso virou lenda. Mas, procurei pela web para ver e havia uma recomendação no Tomcat - A Minimalistic User’s Guide do Tomcat3.2 (por isso talvez seja lenda).

Até.

rodrigousp

É difícil rastrear um erro em qualquer sistema, mas especialmente servlets.
Minha sugestão é seguir os seguintes passos:

  1. Rode o servidor jsp sem nenhum projeto… funcionou ?
    1.a) sim … vá para o segundo passo …
    1.b) não … dê um jeito nesse problema

  2. Coloque um projeto com um simples jsp … funcionou ?
    2.a) sim … Vá para o terceiro passo…
    2.b) Não … dê um jeito nesse problema

  3. Crie uma aplicação que acesse uma ação… funcionou ?
    3.a) sim… (continue confiante, você está indo bem) Vá para o quarto passo…
    3.b) não … Mmm , algum problema com o servlet. Verifique o web.xml

  4. Faça um junit para a sua classe de banco … funcionou ?
    4.a) sim… (quase lá) vá para o último passo
    4.b) não … problemas com a conexão com o banco de dados. Verifique se o jdbc está no classpath. No caso de algum container, coloque o jdbc no lib do servidor de aplicação.

  5. Teste o view-control do seu projeto … funcionou ?
    5.a) Bom, então coloque tudo junto e puxe uma vela… É para funcionar (mas tem que ter fé … senão todos estes passos místicos não servem para nada)
    5.b) não … ah-ha! O problema está em alguma coisa obscura por trás deste seu jsp/action … Algum biblioteca faltando por exemplo, você já sabe que seu servidor está funcionando muito bem, independente da path, etc. Mão na massa… encontre o problema no lugar certo.

Acho que é isso,
Boa sorte

Criado 8 de outubro de 2003
Ultima resposta 10 de out. de 2003
Respostas 15
Participantes 6