Đoạn code dưới đây không thành công trên dòng:ClassNotFoundException oracle.jdbc.driver.OracleDriver chỉ trong servlet, sử dụng Eclipse
Class.forName("oracle.jdbc.driver.OracleDriver");
với lỗi:
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
Hai println
s in:
Wed_Jun_22_11:18:51_PDT_2005
false
Điều này khiến tôi nghĩ rằng lớp học tồn tại và có thể được tìm thấy. Lớp chính xác này cũng hoạt động trong một ứng dụng không phải là servlet.
Tôi đã khởi động lại mọi thứ nhiều lần và tạo lại ứng dụng/servlet nhiều lần. Tất cả các giá trị đã được mã hóa cứng để làm cho nó đơn giản và ngắn gọn.
private static Connection getDBConnection() throws Exception {
System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
System.out.println(Class.class.desiredAssertionStatus());
//load the driver
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}
servlet đầy đủ mà không:
package servletClass_3;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Servlet implementation class OneMoreBookStore
*/
@WebServlet("/OneMoreBookStore")
public class OneMoreBookStore extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
private static Connection getDBConnection() throws Exception {
System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
System.out.println(Class.class.desiredAssertionStatus());
//load the driver
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try
{
Connection con = getDBConnection();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Ứng dụng này hoạt động:
package servletClass_3;
import java.sql.Connection;
import java.sql.DriverManager;
public class DBConnect {
private static Connection getDBConnection() throws Exception {
System.out.println(oracle.jdbc.driver.OracleDriver.BUILD_DATE);
System.out.println(Class.class.desiredAssertionStatus());
//load the driver
Class.forName("oracle.jdbc.driver.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "SYSTEM", "pass");
}
public static void main(String[] args) {
try
{
Connection con = getDBConnection();
System.out.println("connection worked");
con.close();
}
catch (Exception e) {
e.printStackTrace();
}
}
}
Tôi đang sử dụng:
- Eclipse JavaEE 1.4.2
- Tomcat 7
- jdk1.7
- Oracle 11g R2
- Windows 7 64bit
Bạn có chắc là bạn có oracle-xx.jar trong thư mục/WEB-INF/lib của ứng dụng web của bạn hoặc thư mục $ {tomcat.install.dir}/lib không? Có vẻ như cái hộp điều khiển oracle bị thiếu trong classpath. –