下面的代碼失敗就行:ClassNotFoundException的oracle.jdbc.driver.OracleDriver僅在小服務程序,使用Eclipse
Class.forName("oracle.jdbc.driver.OracleDriver");
與錯誤:
java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver
兩個println
S打印:
Wed_Jun_22_11:18:51_PDT_2005
false
這讓我覺得這個類存在,可以找到。這個完全相同的類也適用於非servlet應用程序。
我已經多次重新啓動所有設備並多次重新生成應用程序/ servlet。所有的值都被硬編碼以使其簡單和簡短。
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失敗:
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();
}
}
}
此應用程序的工作原理:
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();
}
}
}
我使用:
- 的Eclipse 1.4.2的JavaEE
- 個Tomcat的7
- jdk1.7
- 的Oracle 11g R2
- 64位Windows 7
您確定在您的Web應用程序的/WEB-INF/lib目錄或$ {tomcat.install.dir}/lib目錄中有oracle-xx.jar嗎?這看起來像是類路徑中缺少的oracle驅動程序jar。 –