Bonjour a tous,
J'ai un petit problème, je souhaiterais pouvoir, via un fichier de propriétés me connecter à n'importe quelle base de données sans avoir a utiliser un classpath dans ma commande java.
Pour se faire j'ai utilise un fichier de propriétés avec ces données :
Dans mon code je charge les classes de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7user = alt157 mdp = ********** base = mabase url = jdbc:postgresql://192.168.0.11/mabase driver = org.postgresql.Driver jar = /usr/share/java/postgresql.jar
Mais cela me renvoie une erreur :
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
30
31
32
33
34
35
36
37
38
39
40 import java.sql.Connection; import java.sql.DriverManager; import java.util.Enumeration; import java.util.Properties; import java.io.InputStream; import java.io.File; import java.io.FileInputStream; import java.net.URLClassLoader; import java.net.URL; import java.util.jar.JarFile; public class Test { public static void main ( String[] args) throws Exception { Properties prop = new Properties(); InputStream file = new FileInputStream("config.txt"); prop.load(file); Connection con = null; String url = prop.getProperty("url"); String user = prop.getProperty("user"); String mdp = prop.getProperty("mdp"); String jar = prop.getProperty("jar"); File f = new File(jar); URLClassLoader loader = new URLClassLoader(new URL[] { f.toURL() } ); JarFile leJar = new JarFile(f.getAbsolutePath()); Enumeration I = leJar.entries(); while ( I.hasMoreElements() ) { String tmp = I.nextElement().toString(); if ( tmp.endsWith(".class") ) { tmp = tmp.substring(0,tmp.length()-6); tmp = tmp.replaceAll("/","."); System.out.println(tmp); Class.forName(tmp ,true,loader); } } con = DriverManager.getConnection(url, user, mdp ); } }
Je ne vois vraiment pas ou il y a un probleme, j'ai tente de mettre le retour de Class.forName dans une variable de type Class et de l'afficher a l'écran. A priori il me charge bien toutes les classes de mon .jar...Exception in thread "main" java.sql.SQLException: No suitable driver found for jdbc:postgresql://192.168.0.11/mabase
at java.sql.DriverManager.getConnection(DriverManager.java:640)
at java.sql.DriverManager.getConnection(DriverManager.java:200)
at Test.main(Test.java:40)
Je tiens juste a préciser que si j'utilise simplement la commande java :
Cela fonctionne mais j'ai pas envie de m'embêter a gérer ce classpath car l'application devra être utilisable facilement et l'on devra pouvoir attaquer différentes bases sans avoir a changer le classapth ou a redémarrer l'application.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 java -classpath /usr/share/java/postgresql.jar:. Test
Merci d'avance a vous tous
Partager