java.lang.ClassNotFoundException:com.servlets.QueryServletMv

java.lang.ClassNotFoundException:com.servlets.QueryServletMv,java,tomcat,servlets,classnotfoundexception,Java,Tomcat,Servlets,Classnotfoundexception,当我在Tomcat7.0上运行servlet时,我一直遇到这个错误。看来我找不到问题所在。代码在我看来很好 这是我的Servlet package com.servlets; import java.io.IOException; import java.io.PrintWriter; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQL

当我在Tomcat7.0上运行servlet时,我一直遇到这个错误。看来我找不到问题所在。代码在我看来很好

这是我的Servlet

package com.servlets;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

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("/querymvservlet")
public class QueryServletMv extends HttpServlet {
private static final long serialVersionUID = 1L;


public QueryServletMv() {
    super();

}


protected void doGet(HttpServletRequest request, HttpServletResponse     response) throws ServletException, IOException {

    // Set the MIME type for the response message
    response.setContentType("text/html");

    //Get a output writer to write the response into the network
    PrintWriter out = response.getWriter();


    Connection conn = null;
    Statement stmt = null;
    try {
        Class.forName("com.mysql.jdbc.Driver");
        // STEP 1: Create a database "Connection" object 
        // For MySQL
        conn = DriverManager.getConnection("jdbc:mysql://localhost     /ebookshop", "root", "");

        // STEP 2: Create a "Statement" object inside the "Connection"
        stmt = conn.createStatement();

        // STEP 3: Execute a SQL SELECT query
        String[] authors = request.getParameterValues("author");

        if(authors == null){
            out.println("<h2>Please go back and select an author</>");
            return;
        }

        String sql = "SELECT * FROM books WHERE author IN (";
        sql +="'" + authors[0] + "'"; // First author
        for (int i = 1; i < authors.length; i++ ){
            sql += ", '" + authors[i] + "'";
        }
        sql += ") AND qty > 0 ORDER BY author ASC, title ASC";
        // Print an HTML page as output of query
        out.println("<html><head><title></title></head><body>");
        out.println("<h2>Thank you for your query. </h2>");
        out.println("<p>Your query is: " + sql + "</p>");

        // Send the query to the server
        ResultSet rs = stmt.executeQuery(sql);

        // STEP 4: Process the query result
        int count = 0;
        while (rs.next()) {
            // Print a paragraph <p>....</p> for each row
            out.println("<p>"+ rs.getString("author") 
                    + ", " + rs.getString("title")
                    + ", $" + rs.getDouble("price") + "<p>");
             ++count;
        }
        out.println("<p>==========" + count + " records found ======</p>");
        out.println("</body></html>");
    } catch (SQLException ex) {
        ex.printStackTrace();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    } finally {
        out.close();

        try {
            // STEP 5: Close the Statement and Connection
            if(stmt != null) stmt.close();
            if(conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

}

404或Not Found错误消息是HTTP标准响应代码,指示客户端能够与给定服务器通信,但服务器无法找到请求的内容

当用户试图跟踪断开或死链接时,网站托管服务器通常会生成“404未找到”网页;因此,404错误是用户可以在web上找到的最容易识别的错误之一

首先检查服务器是否与端口号一起列出:


使用
localhost://portnumber

请显示完整的stacktrace。您是否使用maven或任何其他构建工具?您是以一种奇怪的方式部署还是以简单的常规方式部署?你检查过你的web应用程序的lib文件夹是否为空吗?@Jens刚刚添加了stacktrace@AntJavaDev否我没有使用maven或任何构建工具。我只是在eclipse中正常运行应用程序。我正在描述404错误。什么事情取决于那个错误。我不认为是你的代码错误。这是因为您错过了服务器的一些配置。
<html>
<head>
<title>Yet another e-Bookshop MV</title>
</head>
<body>
<h2>Yet Another e-Bookshop MV</h2>
<form method="get" action="querymvservlet">
    Choose an author: <br /><br />
    <input type="checkbox" name="author" value="Tan Ah Teck" />Ah Teck
    <input type="checkbox" name="author" value="Mohammad Ali" /> Ali
    <input type="checkbox" name="author" value="Kumar" />Kumar
    <input type="checkbox" name="author" value="Kevin Jones" />Kevin
    <input type="submit" value="Search" />
</form>

</body>
</html>
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns="http://java.sun.com/xml/ns/javaee"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com /xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<servlet>
<servlet-name>querybookmv</servlet-name>
<servlet-class>com.servlets.QueryServletMv</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>querybookmv</servlet-name>
<url-pattern>/querymvservlet</url-pattern>
</servlet-mapping>

</web-app>
type Exception report

message Error instantiating servlet class com.servlets.QueryServletMv

description The server encountered an internal error that prevented it  from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class    com.servlets.QueryServletMv
      org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)

root cause

java.lang.ClassNotFoundException: com.servlets.QueryServletMv
 org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
  org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:504)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1074)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.lang.Thread.run(Thread.java:745)