抛出Could not initialize class 异常
我的相关代码如下,目前只写了添加课程的jsp和servlet还有utils。
AddCourse.java
package com.imooc.coursemanagement; import java.io.IOException; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Date; 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 com.imooc.courseutil.DatabaseUtil; /** * Servlet implementation class AddCourse */ @WebServlet("/AddCourse") public class AddCourse extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public AddCourse() { super(); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String course_name = (String) request.getParameter("course_name"); String orientation = (String) request.getParameter("orientation"); String course_description = (String) request.getParameter("course_description"); Date date = new Date(); Object param = new java.sql.Timestamp(date.getTime()); Connection conn = null; PreparedStatement pstmt = null; String sql = "INSERT course() VALUES(null, ?, ?, ?, ?)"; int num = 0; try { conn = DatabaseUtil.getConnection(); pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, course_name); pstmt.setString(2, orientation); pstmt.setString(3, course_description); pstmt.setObject(4, param); num = pstmt.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { DatabaseUtil.release(pstmt, conn); } if (num>0) { System.out.println("Added!"); request.setAttribute("msg", "Added!"); response.sendRedirect(request.getContextPath()+"/showCourse.jsp"); }else { System.out.println("Failed!"); } } }
DatabaseUtil.java
package com.imooc.courseutil; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mchange.v2.c3p0.ComboPooledDataSource; import java.sql.Connection; public class DatabaseUtil { private static final ComboPooledDataSource dataSource = new ComboPooledDataSource(); public static Connection getConnection() throws SQLException { Connection conn = dataSource.getConnection(); return conn; } public static void release(Statement stmt, Connection conn) { if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } public static void release(ResultSet rs, Statement stmt, Connection conn) { if (rs != null) { try { rs.close(); } catch (SQLException e) { e.printStackTrace(); } rs = null; } if (stmt != null) { try { stmt.close(); } catch (SQLException e) { e.printStackTrace(); } stmt = null; } if (conn != null) { try { conn.close(); } catch (SQLException e) { e.printStackTrace(); } conn = null; } } }
addCourse.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Add course</title> </head> <body> <p style="text-align:center"><strong>Add course</strong></p> <form action="/AddCourse/AddCourse" method="POST"> <table> <tr> <td>Course name</td> <td><input type="text" name="course_name"></td> </tr> <tr> <td>Orientation</td> <td><input type="text" name="orientation"></td> </tr> <tr> <td>Course description</td> <td><input type="text" name="course_description"></td> </tr> <tr> <td colspan="2" style="text-align:center"> <input type="submit" value="Add"> </td> </tr> </table> </form> </body> </html>
然后出现错误:
SEVERE: Servlet.service() for servlet [com.imooc.coursemanagement.AddCourse] in context with path [/AddCourse] threw exception [Servlet execution threw an exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.imooc.courseutil.DatabaseUtil
at com.imooc.coursemanagement.AddCourse.doPost(AddCourse.java:57)
我新建了一个Test.java,用来测试数据库,没有问题,可以正常操作:
package com.imooc.coursemanagement; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.Date; import com.imooc.courseutil.DatabaseUtil; public class Test { public static void main(String[] args) { String course_name = "test1"; String orientation = "test2"; String course_description = "test3"; Date date = new Date(); Object param = new java.sql.Timestamp(date.getTime()); Connection conn = null; PreparedStatement pstmt = null; String sql = "INSERT course() VALUES(null, ?, ?, ?, ?)"; int num = 0; try { conn = DatabaseUtil.getConnection(); pstmt = (PreparedStatement) conn.prepareStatement(sql); pstmt.setString(1, course_name); pstmt.setString(2, orientation); pstmt.setString(3, course_description); pstmt.setObject(4, param); num = pstmt.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } finally { DatabaseUtil.release(pstmt, conn); } if (num>0) { System.out.println("Added!"); //request.setAttribute("msg", "Added!"); //response.sendRedirect(request.getContextPath()+"/showCourse.jsp"); }else { System.out.println("Failed!"); } } }
4
收起
正在回答 回答被采纳积分+1
4回答
3. Java 数据库开发与实战应用
- 参与学习 人
- 提交作业 357 份
- 解答问题 8016 个
本阶段将带你学习MySQL数据库,JDBC接口,MyBatis框架等,带你掌握的数据的存放和管理。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星