2017-01-25 4 views
0

Je crée un petit programme de console qui charge tous les fichiers de classe dans un dossier en tant que "plugins", afin que le programme puisse être personnalisé en ajoutant de nouvelles classes.Charger dynamiquement des classes nécessitant une référence de classpath en Java

Voici le problème: un plugin utilise la bibliothèque SQL pour fournir un système d'interrogation simple à une base de données. Pour inclure le pilote jdbc il a le code suivant:

String driver = "com.mysql.jdbc.Driver"; 
Class.forName(driver).newInstance(); 

Je l'ai compilé ajouter le pot de pilote au classpath:

javac -classpath ./libs/mysql-connector-java-5.1.40-bin.jar sqlquery.java 

Quand je lance le pot principal qui charge .class du plugin fichier, même si je spécifie le fichier jar du pilote dans le classpath du programme, il lance un ClassNotFoundException lors de l'appel de la classe com.mysql.jdbc.Driver.

Que puis-je faire?

+0

Vous besoin de la bibliothèque sur le chemin de classe lors de l'exécution du programme aussi. –

+0

Je le fais, j'exécute le programme via la commande shell 'java -classpath" ./plugins/libs/mysql-connector-java-5.1.40-bin.jar "-jar main.jar' –

Répondre

0

Vous devez utiliser soit -jar ou -cp pour charger les classes dans le classpath, vous ne pouvez pas combiner les deux.

Essayez ceci:

java -classpath "main.jar; ./ plugins/libs/mysql-connector-java-5.1.40-bin.jar" sqlquery.java