Chargement dynamique de jar
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 :P:
Code:
1 2 3
| if(oracle
{
Class.forname(
} |
Cordialement et merci pour votre aide
Fabrice
Code:
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;
} |