java 如何解决 Servlet 执行抛出异常?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/32165899/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-11-02 19:46:09  来源:igfitidea点击:

HOW TO SOLVE Servlet execution threw an exception?

javajsptomcatservlets

提问by kavya

I Have been doing a project for uploading files using jsp, servlets and tomcat.

我一直在做一个使用jsp、servlets和tomcat上传文件的项目。

But, i have been getting the following error:

但是,我一直收到以下错误:

type Exception report

message Servlet execution threw an exception

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

exception

javax.servlet.ServletException: Servlet execution threw an exception
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause

java.lang.NoClassDefFoundError: database/Db_Connection
    controller.UploadFileController.doPost(UploadFileController.java:52)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/8.0.24 logs.

My servlet code is:

我的 servlet 代码是:

        package controller;

        import java.io.IOException;
        import java.io.InputStream;
        import java.sql.Connection;
        import java.sql.PreparedStatement;
        import javax.servlet.ServletException;
        import javax.servlet.annotation.MultipartConfig;
        import javax.servlet.annotation.WebServlet;
        import javax.servlet.http.HttpServlet;
        import javax.servlet.http.HttpServletRequest;
        import javax.servlet.http.HttpServletResponse;
        import javax.servlet.http.Part;
        import database.Db_Connection;
        import java.io.PrintWriter;
        import java.util.Random;
        import javax.servlet.RequestDispatcher;

        @WebServlet("/uploadServlet")
        @MultipartConfig(maxFileSize = 16177215)

        public class UploadFileController extends HttpServlet 
      {
       @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException 
    {
                response.setContentType("text/html;charset=UTF-8");
                PrintWriter out = response.getWriter();

                InputStream inputStream = null;

                Random rand = new Random();
                int  n = rand.nextInt(9999) + 1;
                String idTemp=(String.valueOf(n));


                String title=(request.getParameter("title"));
                Part filePart = request.getPart("file_uploaded");

                if (filePart != null) 
                {
                    System.out.println(filePart.getName());
                    System.out.println(filePart.getSize());
                    System.out.println(filePart.getContentType());

                    inputStream = filePart.getInputStream();
                }

                try 
                {
                    Db_Connection dbconn=new Db_Connection();
                    Connection conn= dbconn.Connection();

                    String sql = "INSERT INTO files (id, title, file1) values (?, ?, ?)";
                    PreparedStatement statement = conn.prepareStatement(sql);
                    statement.setString(1, idTemp);
                    statement.setString(2, title);

                    if (inputStream != null) 
                    {
                        statement.setBinaryStream(3, inputStream, (int) filePart.getSize());
                    }

                    int row = statement.executeUpdate();
                    if (row > 0) 
                    {
                        out.println("File uploaded!!!");

                        conn.close();

                        RequestDispatcher rs = request.getRequestDispatcher("upload_form.jsp");
                        rs.include(request, response);
                    }
                    else
                    {
                        out.println("Couldn't upload your file!!!");

                        conn.close();

                        RequestDispatcher rs = request.getRequestDispatcher("upload_form.jsp");
                        rs.include(request, response);
                    }    

                }catch(Exception e){e.printStackTrace();}     
    }   
}

We have created a database in oracle 10g using the following

我们使用以下命令在 oracle 10g 中创建了一个数据库

   create table files(id number(10), title varchar(20),file1 varchar(20));

The files we are trying to upload is of size 5 bytes.I have done the database connection also. Could you please help me resolve this error.

我们尝试上传的文件大小为 5 字节。我也完成了数据库连接。你能帮我解决这个错误吗?

回答by M Sach

Include jar file that contains database/Db_Connectionin classpath

包含包含database/Db_Connection在类路径中的jar 文件

回答by Vincent

"Servlet execution threw an exception" is a generic error message provided whenever there is an exception, In such cases we need to look on the root cause for identifying the exception. In your case DB_Connection class is missing in the classpath.

“Servlet 执行抛出异常”是出现异常时提供的通用错误消息,在这种情况下,我们需要查看根本原因以识别异常。在您的情况下,类路径中缺少 DB_Connection 类。

java.lang.NoClassDefFoundError: database/Db_Connection
controller.UploadFileController.doPost(UploadFileController.java:52)
javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

回答by Shahid Farooq

Your are using oracle database, have you included jar for oracle connectivity. Try adding that to our class path. hopefully this will solve the issue.

您正在使用 oracle 数据库,是否包含用于 oracle 连接的 jar。尝试将其添加到我们的类路径中。希望这将解决问题。