estão apresentando erro no Eclipse porém no curso que estou fazendo usei esses imports e aceitou normalmente, ai quando vou gravar um contato no banco de dados apresenta esse erro no console para mim.
Provavelmente vc importou o projeto de outra workspace.
Ao importar, o Eclipse não conseguiu encontrar o servidor para aplicação Web (provavelmente o Tomcat).
Não encontrando o servidor, tua “Target Runtime” se perdeu e o Eclipse gerou os erros pois existe a necessidade de um servidor para rodar uma aplicação Web.
Se teu projeto for do tipo “Dynamic Web Project”, e deve ser…
Clique com o botão invertido em cima do nome do projeto e vá em:
Propriedades -> Targeted Runtime
Nesta opção, basta ticar o servidor que vc deseja utilizar.
OBS.: É necessário ter um servidor configurado na workspace para que seja exibida essa opção na Targeted Runtime.
Espero ter ajudado…
A
andre_rjp
Bruno obrigado ai cara... fiz isso mesmo salvei a pasta do projeto e importei no eclipse aqui de casa, ai fiz algumas modificações como por exemplo o banco de dados, que coloquei o postgreSQL.
a mesagem que dava antes sumiu mas quando vou adicionar o contato no navegador, o eclipse me retorna a seguinte mensagem:
agora aparece a seguinte mensagem quando vou adicionar o contato:
Importei o postgresql-9.1-901.jdbc3.jar para dentro da pasta webContent\web-inf\lib, restartei o tomcat porém só fica dando essa mensagem agora, é como se não estivesse encontrando o .jar para conectar com o banco, o mais engraçado é que quando executo pelo eclipse a classe testeInsere (é uma classe que criei no src do meu projeto) e o testeLista (outra classe que criei no src do meu projeto) ele conecta e me traz o resultados corretos.
B
BrunoFurtado
Vixx,
Verifique se em “Propriedades -> Java Build Path -> Libraries”, o JAR está sendo apresentado.
Além disso, inclua esse JAR no “Propriedades -> Deployment Assembly”.
Provavelmente teu JAR esta no “Java Build Path”.
Ao compilar através de uma Main, funciona normalmente pois não precisa do Tomcat.
Ao compilar através do aplicativo normal, o Tomcat empacota a aplicação sem o JAR pois não está no “Deployment Assembly”.
O Tomcat tenta encontrar a classe sem sucesso…
Basta adicionar no “Deployment Assembly”.
A
andre_rjp
Então o jar está aparecendo no “Propriedades -> Java Build Path -> Libraries” e inclui ele no Deployment Assembly, até especifiquei a porta do banco no jdbc, mas continua com a mensagem de antes.
O que estou usando aqui em casa é o Eclipse Indigo EE , Postgre 8.4.10, Tomcat 7.0.23 rodando no ubuntu 10.04
B
BrunoFurtado
Puts,
Joga o fonte das duas classes ai pra gente pode comparar…
A
andre_rjp
Segue os fontes da Servlet, do ContatoDAO e da fábrica de conexoes.
packagebr.com.caelum.jdbc.servlet;importjava.io.IOException;importjava.io.PrintWriter;importjava.text.ParseException;importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletResponse;importbr.com.caelum.jdbc.dao.ContatoDAO;importbr.com.caelum.jdbc.modelo.Contato;publicclassAdicionaContatoServletextendsHttpServlet{protectedvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException{PrintWriterout=response.getWriter();Stringnome=request.getParameter("nome");Stringendereco=request.getParameter("endereco");Stringemail=request.getParameter("email");StringdataEmTexto=request.getParameter("dataNascimento");CalendardataNascimento=null;try{Datedate=newSimpleDateFormat("dd/MM/yyyy").parse(dataEmTexto);dataNascimento=Calendar.getInstance();dataNascimento.setTime(date);}catch(ParseExceptione){out.println("Erro de conversão da data");return;// para a execucao do método.}//Monta um objeto contato.Contatocontato=newContato();contato.setNome(nome);contato.setEndereco(endereco);contato.setEmail(email);contato.setDataNascimento(dataNascimento);// Salva o contatoContatoDAOdao=newContatoDAO();dao.adiciona(contato);// Imprime o nome do contato que foi adicionado.out.println("<html>");out.println("<body>");out.println("Contato "+contato.getNome()+" adicionado com sucesso");out.println("</body>");out.println("</hmtl>");}}
packagebr.com.caelum.jdbc.dao;importjava.sql.Connection;importjava.sql.Date;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.util.ArrayList;importjava.util.Calendar;importjava.util.List;importbr.com.caelum.jdbc.ConnectionFactory;importbr.com.caelum.jdbc.modelo.Contato;publicclassContatoDAO{privateConnectionconnection;publicContatoDAO(){//Criando um nova conexão para ESSA conexão.this.connection=newConnectionFactory().getConnection();}publicvoidadiciona(Contatocontato){//Inicio do método que adiciona um contato na agenda.Stringsql="insert into contatos (nome,email,endereco,dataNascimento,telefoneResidencial,"+"telefoneCelular) values (?,?,?,?,?,?)";try{//Prepared statement para insercao.PreparedStatementstmt=connection.prepareStatement(sql);//seta os valores.stmt.setString(1,contato.getNome());stmt.setString(2,contato.getEmail());stmt.setString(3,contato.getEndereco());stmt.setDate(4,newDate(contato.getDataNascimento().getTimeInMillis()));stmt.setString(5,contato.getTelefoneResidencial());stmt.setString(6,contato.getTelefoneCelular());//executa.stmt.execute();stmt.close();// Fim do método que adiciona um contato na agenda.}catch(SQLExceptione){thrownewRuntimeException(e);}}}
packagebr.com.caelum.jdbc;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;publicclassConnectionFactory{publicConnectiongetConnection(){System.out.println("Conectando ao banco.");try{returnDriverManager.getConnection("jdbc:postgresql://localhost/21:5432","postgres","java");}catch(SQLExceptione){thrownewRuntimeException(e);}}}
Repare que vc não indicou a porta de forma correta.
Para as seguintes informações, a URL correta deveria ser a seguinte: IP: localhost ou 127.0.0.1 PORTA: 5432 USUARIO: postgres SENHA: java NOME DO PROJETO: 21 (isso esta correto?)
Então mudei o fonte para: return DriverManager.getConnection(“jdbc:postgresql://localhost:5432/21/”,“postgres”,“java”)
mas continua, e sim o nome do banco é 21 mesmo, acha que se de repente eu mudar o nome possa funcionar?
B
BrunoFurtado
Estranho cara…
Vc conseguiu msmo entrar com a Main indicando a URL daquela forma?
Já tentou fazer um teste entrando no banco de dados direto, nessa base, com este usuário e senha?
O erro na aplicação continua o mesmo?
Acredito que o nome da base não influencia… mas n custa tentar…
A
andre_rjp
sim antes já conseguia gravar sem indicar a porta e depois que informei a url desta forma: "jdbc:postgresql://localhost/21:5432","postgres","java" também continua gravando, segue o fonte da classe TestaInsere e TestaLista e seus respectivos resultados
packagebr.com.caelum.jdbc.teste;importjava.util.Calendar;importbr.com.caelum.jdbc.dao.ContatoDAO;importbr.com.caelum.jdbc.modelo.Contato;publicclassTestaInsere{/** * @param args */publicstaticvoidmain(String[]args){// TODO Auto-generated method stubContatocontato=newContato();contato.setNome("GUJ");contato.setEmail("[email removido]");contato.setEndereco("Rua Teste 24 cj57");contato.setDataNascimento(Calendar.getInstance());contato.setTelefoneResidencial("12345678");contato.setTelefoneCelular("87654321");//Grave nessa conexão!!!ContatoDAOdao=newContatoDAO();//método elegante.dao.adiciona(contato);System.out.println("Gravado!");}}
resultado no console: Conectando ao banco.
Gravado!
Altera URL, cria a base no Postgre e tal…
Esse fonte utilizei em um trabalho e funciounou no MySQL.
Tente criar outro projeto tb…
As vezes rolou alguma falha de bobeira na configuracao…
A
andre_rjp
Caramba Bruno o que me salvou foi um erro meu… troquei na url do jdbc o banco para agenda, sem mudar o nome do banco no postgreSQL, ai a mensagem que apareceu no console foi que o banco agenda nao existia, ai logo vi que a principio conseguiu encontrar o conector já que estava informando que o banco agenda nao existia, ai o que fiz foi resetar o Postgres e agora ta gravando… hehehe tinha até trocado o TOMCAT pelo jetty no desespero… mas valeu mesmo cara muito obrigado.