I was following a couple of Servlets tuts for Java and found the same problem over and over again. I can serve a single page in Tomcat 8.5.47, but when I try to bind a Servlet into a form action, for example, I get the following error when it gets executed: Message Error instantiating servlet class [xxx.xxx.SearchServlet]
It's a 'Dynamic Web Project'. I checked the project properties and the section Source src points to Deploy Path WEB-INF/classes. Also all directories are included in Build Path.
Here are the main files:
src/xxx.xxx/SearchServlet.java
package xxx.xxx;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class SearchServlet extends HttpServlet { private static final long serialVersionUID = 1L; public void service(HttpServletRequest req, HttpServletResponse res) throws IOException { String str = req.getParameter("str_search"); PrintWriter out = res.getWriter(); out.println(str); }}
WebContent/WEB-INF/web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"><servlet><servlet-name>search</servlet-name><servlet-class>SearchServlet</servlet-class></servlet><servlet-mapping><servlet-name>search</servlet-name><url-pattern>/search</url-pattern></servlet-mapping></web-app>
Here's the full report:
HTTP Status 500 – Internal Server ErrorType Exception ReportMessage Error instantiating servlet class [SearchServlet]Description The server encountered an unexpected condition that prevented it from fulfilling the request.Exceptionjavax.servlet.ServletException: Error instantiating servlet class [SearchServlet] org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)Root Causejava.lang.ClassNotFoundException: SearchServlet org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1360) org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1182) org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:528) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:678) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:798) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:810) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)Note The full stack trace of the root cause is available in the server logs.Apache Tomcat/8.5.47
I was wondering if this has something to do with Eclipse Installation to permissions, or maybe it's about the project structure? Anyone has any tip? Maybe I should look for a container image or something to try to build on it? Thanks.