Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets java.lang.ClassNotFoundException:HelloServlet位于org.apache.catalina.loader.WebappClassLoader.loadClass_Servlets_Web.xml_Classnotfoundexception - Fatal编程技术网

Servlets java.lang.ClassNotFoundException:HelloServlet位于org.apache.catalina.loader.WebappClassLoader.loadClass

Servlets java.lang.ClassNotFoundException:HelloServlet位于org.apache.catalina.loader.WebappClassLoader.loadClass,servlets,web.xml,classnotfoundexception,Servlets,Web.xml,Classnotfoundexception,我在webapps/Hello/WEB-INF/class/HelloServlet.class中有一个Hello World servlet,我在WEB.xml中注册了它,如下所示: <servlet> <servlet-name>helloServlet</servlet-name> <servlet-class>HelloServlet</servlet-class> </servlet> <se

我在
webapps/Hello/WEB-INF/class/HelloServlet.class
中有一个Hello World servlet,我在
WEB.xml
中注册了它,如下所示:

<servlet>
    <servlet-name>helloServlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>helloServlet</servlet-name>
    <url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

这是如何导致的,我如何解决它?

主要问题是servlet类没有包。申报一个

package com.example;

public class HelloServlet extends HttpServlet {
web.xml
中注册时,请确保包含以下软件包:

<servlet-class>com.example.HelloServlet</servlet-class>

尝试将HelloServlet类保留在某些包中(而不是默认包中)。

现在您可以只使用注释,这样会更容易:

package com.yourpackage;

import java.io.IOException;
import java.util.ResourceBundle;

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

/**
 * Servlet implementation class HelloWorldServlet
 */
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {


干杯

我也遇到了同样的问题(我使用老式的servlet进行“学习”),我通过重建maven项目(在eclipse maven-->更新项目中)并在eclipse和tomcat中清理项目来解决这个问题。我假设抛出该错误是因为该类不是由maven编译的,因此没有包含在tomcat的编译包中。

请不要使用已有十年历史的tomcat特定资源来学习servlet。阅读最新的资源。无包servlet仅在某些(和古老的!)Tomcat版本中工作。
webapps/hello/WEB-INF/classes/com/example/HelloServlet.class
package com.yourpackage;

import java.io.IOException;
import java.util.ResourceBundle;

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

/**
 * Servlet implementation class HelloWorldServlet
 */
@WebServlet("/HelloWorldServlet")
public class HelloWorldServlet extends HttpServlet {