Как я могу передать параметры банке, используя ClassLoader?

Вот мой код

package serverloader;

import java.net.URL;
import java.net.URLClassLoader;

public class ServerLoader {

    public void initiate(String[] arguments) throws Exception {
        System.out.println("Initiating...");
        URL link = new URL("link");
        URLClassLoader classLoader = new URLClassLoader(new URL[]{link});
        Object o = classLoader.loadClass("class.MyClass").newInstance();
        System.out.println("Loaded, starting...");
    }

}

Это загрузчик для загрузки моего реального приложения, но по какой-то причине он не запускается, и я считаю, что это потому, что есть параметры, необходимые для запуска приложения, которое загружается здесь, и как мне передать параметры, которые здесь

String[] arguments

к банке, которая загружается ClassLoader?

1 ответ

Решение

Вроде того, вам нужно использовать отражение, чтобы получить конструктор, который соответствует вашим потребностям, что-то вроде...

Class[] clazz = classLoader.loadClass("class.MyClass");
Constructor constructor = clazz.getConstructor(String[].class);

Получив конструктор, вы можете создать новый экземпляр класса, используя Constructor#newInstance...

Object o = constructor.newInstance(arguments);

В качестве примера...

Другие вопросы по тегам