#java #xml #servlets
Вопрос:
Я пытаюсь создать простое веб-приложение с использованием servelt, которое принимает два числа в качестве входных данных пользователя и выводит их сумму. Однако, когда я отправляю пользовательский ввод, я начинаю получать ошибку ClassNotFoundException. Я не могу понять, почему я получаю такую ошибку
В настоящее время я использую сервер Tomcat 10 и сервлет 5. Ниже приведены подробные сведения о моем классе сервлетов, веб-xml и структуре папок.
Ниже приведены подробные сведения
Журнал исключений
java.lang.ClassNotFoundException: demo.app.AddServlet
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1444)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1252)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:539)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:520)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:150)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1071)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:789)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:128)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:353)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:382)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:872)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1695)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.base/java.lang.Thread.run(Thread.java:834)
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4" xmlns="http://Java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>abc</servlet-name>
<servlet-class>demo.app.AddServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>abc</servlet-name>
<url-pattern>/add</url-pattern>
</servlet-mapping>
</web-app>
класс сервлета
package demo.app;
import java.io.IOException;
import java.io.PrintWriter;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
public class AddServlet extends HttpServlet{
public void service(HttpServletRequest req, HttpServletResponse res) throws IOException {
int i= Integer.parseInt(req.getParameter("num1"));
int j= Integer.parseInt(req.getParameter("num2"));
int k= i j;
PrintWriter out= res.getWriter();
out.println("The result is" k);
}
}
структура папок
└───src
├───demo
│ └───app
| |__AddServlet.java
└───main
└───webapp
├───META-INF
└───WEB-INF
| |__lib
| |__web.xml
|___demo.html
Может ли кто-нибудь, пожалуйста, объяснить мне, почему у меня возникает такая проблема и как ее решить?
Комментарии:
1. Проверьте, развернут ли ваш класс в контейнере сервлетов.
2. Просмотрите папку web-inf и проверьте, есть ли папка классов и находится ли в ней ваш класс сервлета или нет. Если да, то перезапустите ide или сервер. Если нет, то проверьте путь сборки.