Unable to compile class for JSP

Pessoal estou estudando JSP pela apostila da caelum fj21:
fiz umas classes em java e rodou legal…
então comecei a utilizar as mesmas classes para fazer algo em JSP
mas aconteceu o seguinte erro:

An error occurred at line: 8 in the jsp file: /lista-scriptlet.jsp
ContatoDAO cannot be resolved to a type
5:
6:


    7: <%
    8: ContatoDAO dao = new ContatoDAO();
    9: List contatos = dao.getLista();
    10:
    11: for (int i = 0; i < contatos.size(); i++ ) {

    An error occurred at line: 8 in the jsp file: /lista-scriptlet.jsp
    ContatoDAO cannot be resolved to a type
    5:
    6:


      7: <%
      8: ContatoDAO dao = new ContatoDAO();
      9: List contatos = dao.getLista();
      10:
      11: for (int i = 0; i < contatos.size(); i++ ) {

      An error occurred at line: 12 in the jsp file: /lista-scriptlet.jsp
      Contato cannot be resolved to a type
      9: List contatos = dao.getLista();
      10:
      11: for (int i = 0; i < contatos.size(); i++ ) {
      12: Contato contato = (Contato)contatos.get(i);
      13:
      14: %>
      15:

    • <%=contato.getNome()%>,

      An error occurred at line: 12 in the jsp file: /lista-scriptlet.jsp
      Contato cannot be resolved to a type
      9: List contatos = dao.getLista();
      10:
      11: for (int i = 0; i < contatos.size(); i++ ) {
      12: Contato contato = (Contato)contatos.get(i);
      13:
      14: %>
      15:

    • <%=contato.getNome()%>,

      Stacktrace:
      org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:93)
      org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
      org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:435)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:298)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:277)
      org.apache.jasper.compiler.Compiler.compile(Compiler.java:265)
      org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:564)
      org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:302)
      org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
      org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
      javax.servlet.http.HttpServlet.service(HttpServlet.java:729)

      note The full stack trace of the root cause is available in the Apache Tomcat/5.5.27 logs.

      O código é:

      lista-scriptlet.jsp

      <%@
      page import=“com.cev.dao., com.cev.” %>
      <%@page import=“com.cev.modelo.*”%>
      <%@page import=“java.util.List”%>

        <% ContatoDAO dao = new ContatoDAO(); List contatos = dao.getLista();
      for (int i = 0; i < contatos.size(); i++ ) {
      Contato contato = (Contato)contatos.get(i);
      

      %>

    • <%=contato.getNome()%>, <%=contato.getEmail()%>: <%=contato.getEndereco()%>
    • <% } %>

Você criou a classe Java ContatoDAO ?

An error occurred at line: 8 in the jsp file: /lista-scriptlet.jsp
ContatoDAO cannot be resolved to a type

é isso que to achando estranho, porque a classe está lá,

segue um pedaço:

package com.cev.jdbc.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import com.cev.jdbc.ConnectionFactory;
import com.cev.modelo.Contato;

public class ContatoDAO {

private Connection connection;

public ContatoDAO() throws SQLException{
	this.connection = ConnectionFactory.getConnection();
	
}

public void adiciona(Contato contato) throws SQLException{
	
	//prepared statment para inserção
	PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("insert into contatos (nome, email, endereco) values(?,?,?)");
	
	//seta os valores
	stmt.setString(1,contato.getNome());
	stmt.setString(2,contato.getEmail());
	stmt.setString(3,contato.getEndereco());
	
	//executa
	stmt.execute();
	stmt.close();
}

public List<Contato> getLista() throws SQLException{

	PreparedStatement stmt = (PreparedStatement) this.connection.prepareStatement("select * from contatos");		
	
	ResultSet rs = stmt.executeQuery();
	
	List<Contato> contatos = new ArrayList<Contato>();  
	
	while (rs.next()){
		Contato contato = new Contato();
		
		contato.setNome(rs.getString("nome"));
		contato.setEndereco(rs.getString("endereco"));
		contato.setEmail(rs.getString("email"));

		contatos.add(contato);
		
	}
	rs.close();
	stmt.close();
	return contatos;

}

pode ser algo no meu jdk?

Bem… eu passei por este problema.
A solução foi essa:

Dentro da pasta src do seu projeto, crie as classes ConnectionFactory, Contato e ContatoDAO em seus respectivos pacotes.

Copie e cole o mysql-connector na pasta lib (ctrl + c e ctrl + v)

Manda um refresh no seu projeto para o my-sql connector aparecer na pasta lib.

Rode o seu projeto e deverá funcionar! =D

[]s