Bonjour,
J’utilise le code suivant pour charger dynamiquement un Jar, dans mon cas un pilote JDBC.
Le code marche, mais c’est en partie du copier-coller.
Je suis un peu au-dessus de mes pompes.
Par exemple il y a beaucoup d’exception.
Je me demande lesquels sont vraiment à gérer, a part celles liées aux fichiers.
En plus ça marche sauf avec Oracle.
Dans ce cas je dois faire un Class.forname à la main.
Il y a-t-il un moyen de savoir, si le pilote n’est pas déclaré dans le classpath.
Et éventuellement de demander à l’utilisateur de le faire à la main.
Cela ne lève pas d’erreur.
Seulement quand je fait mon appel à la couche JDBC.
Mais ça pourrait venir d’ailleurs, alors je dois détecter avant de l’utiliser.
Je ne peux pas faire quand même:
Cordialement et merci pour votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 if(oracle { Class.forname( }
Fabrice
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public boolean loadDriver(String pathDriver) { boolean success = false; File file = new File(pathDriver); try { URLClassLoader systemClassLoader = (URLClassLoader) ClassLoader .getSystemClassLoader(); URL url = file.toURI().toURL(); Method addURL = URLClassLoader.class.getDeclaredMethod("addURL", new Class<?>[] { URL.class }); addURL.setAccessible(true); addURL.invoke(systemClassLoader, new Object[] { url }); success = true; } catch (MalformedURLException e) { e.printStackTrace(); } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } return success; }
Partager