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 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
if(oracle… {
	Class.forname(}
Cordialement et merci pour votre aide
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;
	}