抛出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 星