[RESOLVIDO] Erro nas funções para adicionar, alterar no Banco de Dados

Pessoal,

Estou com um problema que é estranho.
Tenho uma tela de cadastro de clientes, eu digito os dados e clico em inserir, porém ele retorna o seguinte erro:

GRAVE: Servlet.service() for servlet [jsp] in context with path [/WebLibrary] threw exception [javax.servlet.ServletException: java.lang.NoSuchMethodError: br.com.weblibrary.dto.ClienteDTO.setIdCliente(Ljava/lang/String;)V] with root cause
java.lang.NoSuchMethodError: br.com.weblibrary.dto.ClienteDTO.setIdCliente(Ljava/lang/String;)V
	at org.apache.jsp.cliente_jsp._jspService(cliente_jsp.java:99)
	at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:433)
	at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
	at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:929)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:405)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:279)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:515)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

Segue o código do meu .jsp da tela de cadastro.

<%@page language="java" contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
  "http://www.w3.org/TR/html4/loose.dtd">

<%@page import="java.sql.Connection"%>
<%@page import="br.com.weblibrary.utils.DBUtils"%>
<%@page import="br.com.weblibrary.dto.ClienteDTO"%>
<%@page import="br.com.weblibrary.dao.ClientesDAO"%>

<%
	String btnInsert = request.getParameter("btnInsert");
	String btnUpdate = request.getParameter("btnUpdate");
	String btnDelete = request.getParameter("btnDelete");
	String btnLocate = request.getParameter("btnLocate");
	String btnClose = request.getParameter("btnClose");

	String txtId = request.getParameter("txtId");
	if (txtId == null)
		txtId = "";
	String txtNome = request.getParameter("txtNome");
	if (txtNome == null)
		txtNome = "";
	String txtCpf = request.getParameter("txtCpf");
	if (txtCpf == null)
		txtCpf = "";
	String txtDtNcto = request.getParameter("txtDtNcto");
	if (txtDtNcto == null)
		txtDtNcto = "";

	if (btnInsert != null) {
		Connection con = DBUtils.getConnection();
		ClientesDAO dao = new ClientesDAO(con);
		ClienteDTO dto = new ClienteDTO();
		dto.setIdCliente(txtId);
		dto.setNmCliente(txtNome);
		dto.setNrCPF(txtCpf);
		dto.setDtNascimento(txtDtNcto);
		int result = dao.insert(dto);
		if (result == 1) {
			out.println("Estado inserido com sucesso!");
		} else {
			out.println("ERRO: Estado não inserido!");
		}
	} else if (btnUpdate != null) {
		Connection con = DBUtils.getConnection();
		ClientesDAO dao = new ClientesDAO(con);
		ClienteDTO dto = new ClienteDTO();
		dto.setIdCliente(txtId);
		dto.setNmCliente(txtNome);
		dto.setNrCPF(txtCpf);
		dto.setDtNascimento(txtDtNcto);
		int result = dao.update(dto);
		if (result == 1) {
			out.println("Estado alterado com sucesso!");
		} else {
			out.println("ERRO: Estado não alterado!");
		}
	} else if (btnDelete != null) {
		Connection con = DBUtils.getConnection();
		ClientesDAO dao = new ClientesDAO(con);
		int result = dao.delete(txtNome);
		if (result == 1) {
			out.println("Estado deletado com sucesso!");
		} else {
			out.println("ERRO: Estado não deletado!");
		}
	} else if (btnLocate != null) {
		Connection con = DBUtils.getConnection();
		ClientesDAO dao = new ClientesDAO(con);
		ClienteDTO dto = dao.locate(txtNome);
		if (dto != null) {
			out.println("Estado localizado com sucesso!");
			txtId = dto.getIdCliente();
			txtNome = dto.getNmCliente();
			txtCpf = dto.getNrCPF();
			txtDtNcto = dto.getDtNascimento();
		} else {
			out.println("ERRO: Estado não localizado!");
		}
	} else if (btnClose != null) {
		response.sendRedirect("index.jsp");
	}
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Tabela de Clientes</title>
</head>
<body>
	<h1>Tabela de Clientes</h1>
	<form action="" method="POST">
		ID:
			<input type="text" id="txtId" name="txtId" size="3"
			maxlength="3" value="<%=txtId%>" />
			<input type="submit" id="btnLocate" name="btnLocate" value="Localizar"/><br/>
		Nome:
			<input type="text" id="txtNome" name="txtNome" size="30"
				maxlength="30" value="<%=txtNome%>" /> <br />
		CPF: <input type="text" id="txtCpf" name="txtCpf" size="15"
				maxlength="14" value="<%=txtCpf%>" /> <br />
		Data Ncto: <input type="text" id="txtDtNcto" name="txtDtNcto" size="12"
				maxlength="12" value="<%=txtDtNcto%>" /> <br />
				
			<input type="submit" id="btnInsert" name="btnInsert" value="Inserir" />
			<input type="submit" id="btnUpdate" name="btnUpdate" value="Alterar" />
			<input type="submit" id="btnDelete" name="btnDelete" value="Deletar" />
			<input type="submit" id="btnClose" name="btnClose" value="Fechar" /> <br />
	</form>
</body>
</html>

E da DAO para cadastrar

package br.com.weblibrary.dao;

import br.com.weblibrary.dto.ClienteDTO;
import br.com.weblibrary.utils.DBUtils;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ClientesDAO {
	private Connection con;

	public ClientesDAO(Connection con) {
		this.con = con;
	}

	// Insert
	public int insert(ClienteDTO dto) {
		String sql = "INSERT INTO CLIENTES " + "VALUES('" + dto.getIdCliente()
				+ "'," + "'" + dto.getNmCliente() + "'," + "'" + dto.getNrCPF()
				+ "'," + dto.getDtNascimento() + "'" + ");";
		return DBUtils.executeUpdate(con, sql);
	}

	// Update
	public int update(ClienteDTO dto) {
		String sql = "UPDATE Clientes " + "SET NmCliente = '"
				+ dto.getNmCliente() + "'," + "NrCPF = '" + dto.getNrCPF()
				+ "'," + "DtNascimento = '" + dto.getDtNascimento() + "'"
				+ "WHERE NmCliente = " + dto.getNmCliente() + ";";
		return DBUtils.executeUpdate(con, sql);
	}

	// OU
	/*
	public int update2(ClienteDTO dto) {
		String sql = "UPDATE Clientes " + "SET NmCliente = ?, NrCPF = ? "
				+ "WHERE IdCliente = ?;";
		PreparedStatement stmt = null;
		try {
			stmt = con.prepareStatement(sql);
			stmt.setString(1, dto.getNmCliente());
			stmt.setString(2, dto.getNrCPF());
			stmt.setString(3, dto.getIdCliente());
			return stmt.executeUpdate();
		} catch (SQLException ex) {
			Logger.getLogger(ClientesDAO.class.getName()).log(Level.SEVERE,
					null, ex);
		}
		return 0;
	}
	 */
	
	// Delete
	public int delete(String key) {
		String sql = "";
		return DBUtils.executeUpdate(con, sql);
	}

	// Locate
	public ClienteDTO locate(String key) {
		String sql = "SELECT * FROM Estados WHERE IdEstado = '" + key + "';";
		ResultSet rs = DBUtils.executeQuery(con, sql);
		
		try {
			if (rs.next()) {
				ClienteDTO dto = new ClienteDTO();
				dto.setIdCliente(rs.getInt(1));
				dto.setNmCliente(rs.getString(2));
				dto.setNrCPF(rs.getString(3));
				dto.setDtNascimento(rs.getDate(4));
				return dto;
			}
		} catch (SQLException ex) {
			Logger.getLogger(ClientesDAO.class.getName()).log(Level.SEVERE,
					null, ex);
		} finally {
			DBUtils.closeResultSet(rs);
		}
		return null;
	}
	
	// select
	public ArrayList<ClienteDTO> select() {
		String sql = "SELECT * FROM Clientes;";
		ArrayList<ClienteDTO> items = new ArrayList<ClienteDTO>();
		ResultSet rs = DBUtils.executeQuery(con, sql);
		
		try {
			while (rs.next()) {
				ClienteDTO dto = new ClienteDTO();
				dto.setIdCliente(rs.getInt(1));
				dto.setNmCliente(rs.getString(2));
				dto.setNrCPF(rs.getString(3));
				dto.setDtNascimento(rs.getDate(4));
				items.add(dto);
			}
		} catch (SQLException ex) {
			Logger.getLogger(EstadosDAO.class.getName()).log(Level.SEVERE,
					null, ex);
		} finally {
			DBUtils.closeResultSet(rs);
		}
		return items;
	}
}

Alguém já teve esse problema?

Obrigado

Isso costuma ser quando você adiciona JAR em sua aplicação mas seu servidor já tem essas bibliotecas.

Tente retirar e adicionar os JARs do seu servidor.

tente separar esse jsp cheio de código Java também.

vai ajudar você a entender melhor onde estão futuros problemas.

Obrigado pelas dicas!!

Funcionou, eu apenas deletei e adicionei novamente o driver do MySQL da lib do Tomcat e funcionou!

Até mais!