Le code ci-dessous échoue sur la ligne:
Class.forName("Oracle.jdbc.driver.OracleDriver");
avec l'erreur:
Java.lang.ClassNotFoundException: Oracle.jdbc.driver.OracleDriver
Les deux println
s impriment:
Wed_Jun_22_11:18:51_PDT_2005
false
Cela me fait penser que la classe existe et peut être trouvée. De plus, cette même classe exacte fonctionne dans une application non-servlet.
J'ai tout redémarré plusieurs fois et régénéré plusieurs fois l'application/le servlet. Toutes les valeurs ont été codées en dur pour le rendre simple et court.
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 complet qui échoue:
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();
}
}
}
Cette application fonctionne:
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();
}
}
}
J'utilise:
Probablement vous ne déployez pas le pilote Oracle avec votre application.
Vous avez plusieurs options:
WEB-INF/lib
.Build Path
-> Configure Build Path...
-> Order and Export
-> Vérifier les pilotes.Vous devez inclure le fichier ojdbc6.jar dans le Assemblée de déploiement du projet ...
sélectionnez le projet Web qui contient le fichier jsp ...
sélectionnez Projet onglet dans la barre de menus dans Eclipse
sélectionnez propriétés dans le menu déroulant
select Deployment Assembly
Ajoutez-y votre fichier ojdbc6.jar.
Essayez ceci, changez le Oracle.jdbc.driver.OracleTypes
en Oracle.jdbc.OracleTypes