Auf Thema antworten

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



Oben