Java - Error instanciando clase de servlet

 
Vista:

Error instanciando clase de servlet

Publicado por Leandro (2 intervenciones) el 12/12/2020 07:43:52
¡Saludos desde Argentina!
Esta es la cuestión: tenía algunos proyectos con servlets en JSP que los podía ejecutar en con el NetBeans 8.2.
Cuando los quise ejecutar en el NetBeans 12.1, desde otra computadora, me tiraba: "Error instanciando clase de servlet" y "El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento".
Intenté creando una nueva aplicación web desde cero, pero me tiraba lo mismo. También traté usando el JDK 1.8 (con el que funcionaba antes) en vez del JDK 15, pero no resultó. Intenté ademas actualizar del Tomcat 7 al Tomcat 9, y también con el GlassFish, pero me seguía pasando lo mismo. Estuve horas y horas buscando una solución por Internet, pero no encontré ninguna. ¿Cual podría ser el problema?

Este es mi código:

miServlet.java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package prueba;
 
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 *
 * @author 54113
 */
public class miServlet extends HttpServlet {
 
    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code>
     * methods.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            /* TODO output your page here. You may use following sample code. */
            out.println("<!DOCTYPE html>");
            out.println("<html>");
            out.println("<head>");
            out.println("<title>Servlet miServlet</title>");
            out.println("</head>");
            out.println("<body>");
            out.println("<h1>Servlet miServlet at " + request.getContextPath() + "</h1>");
            out.println("</body>");
            out.println("</html>");
        } finally {
            out.close();
        }
    }
 
    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
        response.setContentType("text/html;charser=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("Hola");
    }
 
    /**
     * Handles the HTTP <code>POST</code> method.
     *
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }
 
    /**
     * Returns a short description of the servlet.
     *
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
 
}

index.jsp:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%--
    Document   : index
    Created on : 12 dic. 2020, 00:06:47
    Author     : 54113
--%>
 
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
         <h4>Haga click <a href="miServlet"> aqui </a> </h4>
    </body>
</html>

web.xml:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>miServlet</servlet-name>
        <servlet-class>prueba.miServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>miServlet</servlet-name>
        <url-pattern>/miServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

context.xml:
1
2
<?xml version="1.0" encoding="UTF-8"?>
<Context antiJARLocking="true" path=""/>


Estos son los mensajes de error:

Con Tomcat 7:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Estado HTTP 500 – Internal Server Error
 
 
Tipo Informe de Excepción
 
mensaje Error instanciando clase de servlet [prueba.miServlet]
 
Descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.
 
excepción
javax.servlet.ServletException: Error instanciando clase de servlet [prueba.miServlet]
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1201)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2531)
	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2520)
	java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.base/java.lang.Thread.run(Thread.java:832)
 
 
 
causa raíz
java.lang.RuntimeException:
	prueba.miServlet.<init>(miServlet.java:1)
	java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
	java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
	org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
	org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1201)
	org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2531)
	org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2520)
	java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.base/java.lang.Thread.run(Thread.java:832)
 
 
 
nota La traza completa de la causa de este error se encuentra en los archivos de registro del servidor.
 
 
Apache Tomcat/7.0.107

Con Tomcat 9:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
Estado HTTP 500 – Internal Server Error
 
 
Tipo Informe de Excepción
 
mensaje Error instanciando clase de servlet [prueba.miServlet]
 
Descripción El servidor encontró un error interno que hizo que no pudiera rellenar este requerimiento.
 
excepción
javax.servlet.ServletException: Error instanciando clase de servlet [prueba.miServlet]
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.base/java.lang.Thread.run(Thread.java:832)
 
 
causa raíz
java.lang.RuntimeException:
	prueba.miServlet.<init>(miServlet.java:1)
	java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
	java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
	java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:481)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:888)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1597)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1130)
	java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:630)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.base/java.lang.Thread.run(Thread.java:832)
 
 
nota La traza completa de la causa de este error se encuentra en los archivos de registro del servidor.
 
 
Apache Tomcat/9.0.41

Con GlassFish:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HTTP Status 500 - Internal Server Error
 
 
type Exception report
 
message Internal Server Error
 
description The server encountered an internal error that prevented it from fulfilling this request.
 
exception
javax.servlet.ServletException: Error instantiating servlet class prueba.miServlet
 
 
root cause
com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class prueba.miServlet
 
 
root cause
java.lang.RuntimeException:
 
 
note The full stack traces of the exception and its root causes are available in the GlassFish Server Open Source Edition 5.0.1 logs.
 
 
GlassFish Server Open Source Edition 5.0.1

Por último, esta es la estructura de directorios del proyecto:
project
files

¡Saludos y muchas gracias!
Leandro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Error instanciando clase de servlet

Publicado por Billy Joel (876 intervenciones) el 12/12/2020 15:17:03
El error que veo es por el jdk que estas usando. Instala el JDK 8 y le das clean & build

error

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error instanciando clase de servlet

Publicado por Leandro (2 intervenciones) el 13/12/2020 00:52:24
@Billy Joel, lo intenté con el JDK 8 e incluso con el 7. Lo que hice fue instalar el NetBeans 8.2 nuevamente, configurandolo con JDK 1.8 y Tomcat 7. Ahí levantó sin mayores problemas. Sin embargo, cuando intenté levantarlo desde el NetBeans 12.1, no solo que me seguía tirando el mismo error, sinó que cuando lo quise volver a levantar desde el 8.2 me daba de nuevo ese problema. Afortunadamente, había creado un backup para que, en caso de corromperse el proyecto al usar NetBeans 12.1 (que fué lo que efectivamente ocurrió), siguiera intacta la versión que andaba con el 8.2. La verdad no sé por donde anda pasando el problema, si es un tema de librerías, directorios, u otra cosa.
Gracias de todos modos.
Leandro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error instanciando clase de servlet

Publicado por oliver (1 intervención) el 11/03/2021 00:31:04
A mi me sucedio lo mismo, pero al cambiar de servidor de aplicaciones por Glass fish en apache netbeans 12.2 funciono. No se si es de Tomcat, que el pasado tambien tuve esos detalles con ese servidor de aplicaciones.

Espero que te sirve y hasta hoy, buscando el informacion sobe el error encontre esta solucion parcial.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error instanciando clase de servlet

Publicado por javier (1 intervención) el 30/06/2021 06:32:37
Tengo el mismo problema y no encuentro la causa, ya llevo días y nada..... si es que lo solucionaste... me dices como lo resolviste por favor. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Error instanciando clase de servlet

Publicado por Reinaldo (1 intervención) el 24/08/2021 05:30:03
Alguien más logro resolver este tema? me pasa lo msimo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar