Der folgende Code schlägt in der Zeile fehl:
Class.forName("Oracle.jdbc.driver.OracleDriver");
mit dem Fehler:
Java.lang.ClassNotFoundException: Oracle.jdbc.driver.OracleDriver
Die beiden println
s drucken:
Wed_Jun_22_11:18:51_PDT_2005
false
Das lässt mich glauben, dass die Klasse existiert und gefunden werden kann. Auch diese exakt gleiche Klasse funktioniert in einer Nicht-Servlet-Anwendung.
Ich habe alles mehrmals neu gestartet und die Anwendung/das Servlet mehrmals neu erstellt. Alle Werte wurden hart codiert, um es einfach und kurz zu machen.
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");
}
volles Servlet, das fehlschlägt:
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();
}
}
}
Diese Anwendung funktioniert:
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();
}
}
}
Ich benutze:
Wahrscheinlich stellen Sie den Oracle-Treiber nicht mit Ihrer Anwendung bereit.
Sie haben mehrere Möglichkeiten:
WEB-INF/lib
-Ordner ablegenBuild Path
-> Configure Build Path...
-> Order and Export
-> Überprüfen Sie die Treiber.Sie müssen die Datei ojdbc6.jar in die Deployment Assembly des Projekts einfügen ...
wählen Sie das Webprojekt aus, das die JSP-Datei enthält ...
wählen Sie in der Menüleiste von Eclipse die Option Project aus
wählen Sie Eigenschaften im Dropdown-Menü aus
select Deployment Assembly
Fügen Sie Ihre Datei ojdbc6.jar hinzu.
Versuchen Sie dies, ändern Sie den Oracle.jdbc.driver.OracleTypes
in Oracle.jdbc.OracleTypes
.