Link com Ajax não funciona

Eae pessoal, estou fazendo o exercicio 11.21 da apostila fj21 da caelum, nele eu com apenas um link eu altero o status de uma tarefa não finalizada para finalizada sem mudar de pagina, porém, quando clico no link nada acontece.

<html>
<head>
<meta charset="UTF-8">
<title>Lista de Tarefas</title>
<script type="text/javascript" src="resources/jquery-1.4.2.min.js"></script>
<script type='text/javascript' src='resources/jquery-ui-1.8.2.custom.min.js'></script>

</head>
<body>
	<script type="text/javascript">
		function finalizaAgora(id){
			$.post("finalizaTarefa", {'id' : id}, function(){
				$("#tarefa"+id).html("Finalizado");
			});
		}
	</script>

	<a href="novaTarefa">Criar nova tarefa</a>
	<br>
	<br>
	<table>
		<tr>
			<th>Id</th>
			<th>Descrição</th>
			<th>Finalizado?</th>
			<th>Data de finalização</th>
		</tr>
		<c:forEach items="${tarefas}" var="tarefa">
			<tr>
				<td>${tarefa.id}</td>
				<td>${tarefa.descricao}</td>

				<c:if test="${tarefa.finalizado eq false}">
					<td id="tarefa_${tarefa.id}"><a href="#"
						onClick="finalizaAgora(${tarefa.id})"> Finaliza Agora </a></td>
				</c:if>

				<c:if test="${tarefa.finalizado eq true}">
					<td>Finalizado</td>
				</c:if>

				<td>${tarefa.dataFinalizacao}</td>

				<td><a href="removeTarefa?id=${tarefa.id}">Remover</a></td>
				<td><a href="mostraTarefa?id=${tarefa.id}">Alterar</a></td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>
@ResponseBody
	@RequestMapping("finalizaTarefa")
	public void finaliza(Long id) {
		JdbcTarefaDao dao = new JdbcTarefaDao();
		dao.finaliza(id);
	}
public void finaliza(Long id) {
		String sql = "UPDATE tarefas SET finalizado = ? WHERE id=?";
		try(PreparedStatement stmt = connection.prepareStatement(sql)) {
			try {
				stmt.setBoolean(1, true);
				stmt.setLong(2, id);
				stmt.execute();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}catch(SQLException e) {
			throw new RuntimeException(e);
		}
		
	}

Ao tentar receber um Long id no endpoint, vc deve enviar apenas o número:

$.post("finalizaTarefa", id, function(){
  $("#tarefa"+id).html("Finalizado");
});

Se quiser enviar do jeito que está fazendo, vc deve criar uma classe para receber o valor, ex:

public class FinalizarTarefaRequest {
  @JsonProperty private Long id;

  // getter
}

e usar essa classe no endpoint:

@ResponseBody
@RequestMapping("finalizaTarefa")
public void finaliza(FinalizarTarefaRequest body) {

essa anotação @JsonProperty n funciona para mim