Dynamisches Laden Problem, wenn Programm aus dem Glas führt
-
05-07-2019 - |
Frage
Ich habe eine Anwendung, die über Java-Klassen erweiterbar ist, die zu einer bestimmten Schnittstelle entsprechen. Wenn ich das Programm von der Kommandozeile Klassen laufen, kann ich das Add-on-Klassen instanziiert mit:
Class.forName("myAddon").newInstance();
Allerdings, wenn ich die Anwendung JAR-Datei (die Hauptklasse richtig einstellen), erhalte ich eine Klasse nicht gefunden Ausnahme. Kann jemand etwas Licht auf, was hier vor sich geht?
TIA, Adam
Lösung
Ich habe es geschafft, dies zum Laufen bringen eine URLClassLoader mit Angabe der Suchpfad das aktuelle Verzeichnis wie folgt aussehen:
URLClassLoader cl = new URLClassLoader(new URL[] {new File(".").toURI().toURL()});
Vielen Dank für Ihre Hilfe,
Adam
Andere Tipps
Die Klasse Sie suchen ist nicht auf dem Classpath. Wenn es in einem Verzeichnis
d. MyClass.class MyJar.jar
Sie müssen tun:
java -classpath . -jar MyJar.jar
Aber wirklich brauchen wir mehr Informationen, die Frage zu beantworten. Was ist die Hauptklasse im jar-Manifest auf? Was ist Ihr Classpath? Wie bestimmen Sie, welche Klasse zu laden?