Comportement de Class.forName() dans un test Junit

cs_Luffy59 Messages postés 1 Date d'inscription jeudi 9 mars 2006 Statut Membre Dernière intervention 23 avril 2008 - 23 avril 2008 à 18:21
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 - 24 avril 2008 à 20:32
Bonjour,

Voila mon probleme, je cherche à acceder à une base de données depuis un test Junit et je ne peux pas charger le driver approprié.
Lorsque j'utilise la methode de la classe en dehors du test Junit pas de soucis mais dedans impossible de trouver la ressource :

static final String dbURL = "jdbc:derby://localhost:1527/myDB_fle"
    static final String dbPassword = "xxx";
    static final String dbUser = "xxx";
   
    private static ResultSet makeRequest(String query) {
        try {
         
            Class.forName("org.apache.derby.jdbc.ClientDriver"); // Cette ligne provoque l'erreur ci dessous
           
            Connection con = DriverManager.getConnection(dbURL,dbUser,dbPassword);
            Statement stmt = con.createStatement();
            ResultSet rs = stmt.executeQuery(query);
            return rs;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }           
    }
   

java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:402)
    at org.eclipse.osgi.framework.internal.core.BundleLoader.findClass(BundleLoader.java:347)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:83)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)

Merci d'avance :)

2 réponses

Ombitious_Developper Messages postés 2333 Date d'inscription samedi 28 février 2004 Statut Membre Dernière intervention 26 juillet 2013 38
24 avril 2008 à 09:54
Salut:

"java.lang.ClassNotFoundException: org.apache.derby.jdbc.ClientDriver"

ça devrait être un problèle de configuration du CLASSPATH.
0
Twinuts Messages postés 5373 Date d'inscription dimanche 4 mai 2003 Statut Modérateur Dernière intervention 10 août 2022 110
24 avril 2008 à 20:32
Salut,

Class.forName(xxx) va chercher la classe dans le classpath et ensuite charger le byte code de celle-ci en mémoire pour pouvoir l'instancier par la suite.

------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

OoWORAoO
0