1
resposta

The method setDataAbertura(java.util.Date) in the type Empresa is not applicable for the arguments (java.util.Date)

Boa tarde, estou com esse erro. Importei o projeto na aula de MVC, e da esse erro Minha classe empresa esta assim:

package br.com.alura.gerenciador.modelo;

import java.util.Date;

public class Empresa {

    private Integer id;
    private String nome;
    private Date dataAbertura = new Date();

    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getNome() {
        return nome;
    }
    public void setNome(String nome) {
        this.nome = nome;
    }

    public void setDataAbertura(Date dataAbertura) {
        this.dataAbertura = dataAbertura;
    }

    public Date getDataAbertura() {
        return dataAbertura;
    }
}

E classe NovaEmpresaServlet.java, que da esse erro:

package br.com.alura.gerenciador.servlet;

import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import br.com.alura.gerenciador.modelo.Banco;
import br.com.alura.gerenciador.modelo.Empresa;

/**
 * Servlet implementation class NovaEmpresaServlet
 */
@WebServlet("/novaEmpresa")
public class NovaEmpresaServlet extends HttpServlet {

    private static final long serialVersionUID = 1L;

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
            throws ServletException, IOException {
        System.out.println("Cadastrando nova empresa");

        String nomeEmpresa = request.getParameter("nome");
        String paramDataEmpresa = request.getParameter("data");

        Date dataAbertura = null;
        try {
            SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
            dataAbertura = sdf.parse(paramDataEmpresa);
        } catch (ParseException e) {
            throw new ServletException(e);
        }

        Empresa empresa = new Empresa();
        empresa.setNome(nomeEmpresa);
        empresa.setDataAbertura(dataAbertura);

        Banco banco = new Banco();
        banco.adiciona(empresa);

        request.setAttribute("empresa", empresa.getNome());

        response.sendRedirect("listaEmpresas");

//        //chamar o JSP ou Servlet
//        RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas");
//        request.setAttribute("empresa", empresa.getNome());
//        rd.forward(request, response);
    }

}
1 resposta

Olá Alan, tudo bem? O erro que você está recebendo indica que o método setDataAbertura na classe Empresa não é aplicável para os argumentos (java.util.Date). Isso pode acontecer quando o tipo do parâmetro passado para o método não é o mesmo tipo que foi definido no método.

No seu caso, o problema pode estar na importação da classe Date. Verifique se você está importando a classe java.util.Date em ambas as classes Empresa e NovaEmpresaServlet.

Outra possibilidade é que exista outra classe Empresa em outro pacote que esteja sendo importada sem querer. Nesse caso, verifique se a importação da classe Empresa está correta.

Espero ter ajudado e bons estudos!