Okay ich habe das mit dem ServiceLoader auch mal probiert:
[CODE lang="java" title="PluginManager.java"]package pluginsystemServiceLoader;
import pluginsystem.Plugin;
import plugintestsystem.PluginAdministration;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.ServiceLoader;
public class PluginManager {
final String pluginDir = "E:/ProgrammierProjekte/Intellij/Plugin/out/artifacts/Plugin_jar";
public List<Plugin> loadPlugins() throws MalformedURLException {
File pluginDirFile = new File(pluginDir);
if (!pluginDirFile.isDirectory()) {
System.err.println("Der angegebene Pfad ist kein Ordner!");
return null;
}
if (!(pluginDirFile.listFiles().length > 0)) {
System.err.println("Es gibt keine Plugins im Ordner!");
return null;
}
URL[] urls = new URL[pluginDirFile.listFiles().length];
int i = 0;
for (File pluginFile : pluginDirFile.listFiles()) {
urls[i++] = pluginFile.toURI().toURL();
}
URLClassLoader ucl = new URLClassLoader(urls, PluginAdministration.class.getClassLoader());
System.out.println(Arrays.toString(ucl.getURLs()));
List<Plugin> plugins = new ArrayList<>();
ServiceLoader<Plugin> services = ServiceLoader.load(Plugin.class, ucl);
for (Plugin plugin : services) {
plugins.add(plugin);
System.out.println("hi");
}
System.out.println("hiEnd");
return plugins;
}
}
[/CODE]
Jedoch funktioniert das nicht. Irgendeine Idee?
LG
Markus