1
resposta

JasperException: Unable to compile class for JSP:

Bom dia/tarde/noite, :D

Se alguém puder me ajudar ficarei muito grato, já tentei diversas coisas e não consigo sair desse erro :(.

Depois de compilar o java usando maven 3.6.0 com tomcat 9.0.55, todas as páginas do projeto funcionam, menos uma ("/listaEmpresas"), a qual deveria pegar a lista de empresas armazenadas e retornar na tela para o usuário. As demais páginas abrem normalmente. Penso que pode ser a importação da Classe empresa no arquivo .JSP, porém, não sei como importar corretamente, estou usando o VS Code e não consigo fazer o jsp reconhecer a classe Empresa.

Recebo o erro:

""" Exception Report

Message org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.listaEmpresas_jsp

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.listaEmpresas_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:589) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:425) """ """ GRAVE: Servlet.service() for servlet [jsp] threw exception org.apache.jasper.JasperException: Unable to compile class for JSP:

An error occurred at line: [15] in the generated java file: [/home/home/.config/Code/User/workspaceStorage/01fc8d39d3702286b95b6fe64bb70911/adashen.vscode-tomcat/tomcat/apache-tomcat-9.0.55/work/Catalina/localhost/app/org/apache/jsp/listaEmpresas_jsp.java] Only a type can be imported. app.src.main.java.bo.Empresa.java resolves to a package

Stacktrace: at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:102) at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:213) at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:487) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:397) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:367) at org.apache.jasper.compiler.Compiler.compile(Compiler.java:351) at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:605)

"""

listaEmpresas.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.util.List, app.src.main.java.bo.Empresa.class"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

Lista de empresas:
<ul>
    <c:forEach items="${empresas}" var="empresa">

        <li>${empresa.nome } - <fmt:formatDate value="${empresa.dataAbertura }" pattern="dd/MM/yyyy"/> </li>
    </c:forEach>
</ul>

classe Empresa)

public class Empresa {

private Integer id;
private String nome;


/**
 * @return int return the id
 */
public Integer getId() {
    return id;
}

/**
 * @param id the id to set
 */
public void setId(Integer id) {
    this.id = id;
}

/**
 * @return String return the nome
 */
public String getNome() {
    return nome;
}

/**
 * @param nome the nome to set
 */
public void setNome(String nome) {
    this.nome = nome;
}

}

Servlet:

import java.io.IOException; import java.io.PrintWriter; import java.util.List;

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

@WebServlet("/listaEmpresas") public class ListaEmpresasServlet extends HttpServlet {

private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    Banco banco = new Banco();
    List<Empresa> lista = banco.getEmpresas();
    request.setAttribute("empresas", lista);
    RequestDispatcher rd = request.getRequestDispatcher("/listaEmpresas.jsp");
    rd.forward(request, response);
}

}

Classe Banco:

import java.util.ArrayList; import java.util.List;

public class Banco {

private static List<Empresa> lista = new ArrayList<>();

static {
    Empresa empresa1 = new Empresa();
    empresa1.setNome("Citrinita");

    Empresa empresa2 = new Empresa();
    empresa2.setNome("BISCM");

    lista.add(empresa1);
    lista.add(empresa2);

}

public void adiciona(Empresa empresa){
    Banco.lista.add(empresa);
}

public List<Empresa> getEmpresas(){
    return Banco.lista;
}

}

1 resposta

Oi Diego,

O problema está no import na sua página JSP:

<%@ page import="java.util.List, app.src.main.java.bo.Empresa.class"%>

O import do java.util.List está correto, mas o import da sua classe Empresa que não. O correto deveria ser o nome do pacote e da sua classe:

<%@ page import="java.util.List, bo.Empresa"%>

OBS: verifique se o pacote da sua classe está correto.