2017-01-25 4 views
0

Ich mache ein kleines Konsolenprogramm, das alle Klassendateien in einem Ordner als "Plugins" lädt, so dass das Programm durch Hinzufügen neuer Klassen anpassbar ist.Dynamisch laden Klassen, die Klassenpfadreferenz in Java benötigen

Hier ist das Problem: Ein Plugin verwendet die SQL-Bibliothek, um ein einfaches Abfragesystem für eine Datenbank bereitzustellen. Um den JDBC-Treiber enthalten sie den folgenden Code hat:

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

ich es Hinzufügen der Treiber jar zu dem Classpath zusammengestellt:

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

Wenn ich die Haupt Glas laufen, die das Plugin-.class- lädt Datei, obwohl ich den Treiber jar im Programm Classpath angeben, wirft es eine ClassNotFoundException beim Aufruf der com.mysql.jdbc.Driver Klasse.

Was kann ich tun?

+0

Sie benötigen Sie die Bibliothek auf dem Klassenpfad, wenn Sie das Programm ebenfalls ausführen. –

+0

Ich mache das, ich führe das Programm über den Shell-Befehl 'java -classpath './plugins/libs/mysql-connector-java-5.1.40-bin.jar" -jar main.jar' –

Antwort

0

sollten Sie verwenden entweder -jar oder -cp die Klassen in den Klassenpfad zu laden, Sie nicht die beiden kombinieren.

Versuchen Sie folgendes:

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