Hallo,
ich hab nun schon stundenlang versucht raus zu bekommen, wieso ich keine Klasse dynamisch aus einer externen JAR-Datei laden kann, und hoffe jemand kann mir helfen. Jedes mal kommt eine ClassNotFoundException, obwohl der Pfad zur JAR-Datei richtig ist.
Fehlermeldung:
Main:
So selbstverständlich hab ich in dem Ordner, wo die JAR mit dieser Main-Fkt. liegt auch einen Ordner "plugins", in dem sich eine weitere JAR-Datei namens "plugin.PluginTest.jar" befindet.
Diese ist auch richtig aufgebaut und die Klasse liegt auch im richtigen Package in dieser Datei. Aber irgendwie will er nicht die Datei laden.
Hier mal meine Daten als Zip (so liegt es bei mir auf der Festplatte und bringt immer den Fehler).
Danke schonmal im vorraus, KoMtuR
ich hab nun schon stundenlang versucht raus zu bekommen, wieso ich keine Klasse dynamisch aus einer externen JAR-Datei laden kann, und hoffe jemand kann mir helfen. Jedes mal kommt eine ClassNotFoundException, obwohl der Pfad zur JAR-Datei richtig ist.
Fehlermeldung:
Code:
23.10.2007 22:00:13 urlclassloadertest.Main main INFO: ClassName: plugin.PluginTest
23.10.2007 22:00:13 urlclassloadertest.Main main INFO: URL: /C:/Java/test/plugin.PluginTest.jar
Exception in thread "main" java.lang.ClassNotFoundException: plugin.PluginTest
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at urlclassloadertest.Main.main(Main.java:49)
Main:
Java:
package urlclassloadertest;
import de.server.plugins.IPlugin;
import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.logging.Logger;
/**
*
* @author KoMtuR
*/
public class Main {
protected static Logger logger = Logger.getLogger(Main.class.getName());
public static void main(String[] args) throws Exception {
File pluginFolder = new File("plugins/");
if(!pluginFolder.isDirectory())
throw new RuntimeException("Pfad plugins/ existiert nicht.");
String[] fileList = pluginFolder.list();
for(String file : fileList) {
File curFile = new File(file);
if(curFile.getName().endsWith(".jar")) {
String name = curFile.getName().substring(0, curFile.getName().lastIndexOf("."));
logger.info("ClassName: "+name);
logger.info("URL: "+ curFile.toURL().getPath());
URLClassLoader cl = new URLClassLoader( new URL[] {curFile.toURI().toURL()});
IPlugin plugin = (IPlugin)cl.loadClass(name).newInstance();
plugin.testFunction();
}
}
}
}
So selbstverständlich hab ich in dem Ordner, wo die JAR mit dieser Main-Fkt. liegt auch einen Ordner "plugins", in dem sich eine weitere JAR-Datei namens "plugin.PluginTest.jar" befindet.
Diese ist auch richtig aufgebaut und die Klasse liegt auch im richtigen Package in dieser Datei. Aber irgendwie will er nicht die Datei laden.
Hier mal meine Daten als Zip (so liegt es bei mir auf der Festplatte und bringt immer den Fehler).
Danke schonmal im vorraus, KoMtuR