Java вызывает метод main () класса, используя отражение - PullRequest
17 голосов
/ 12 февраля 2011

Мне нужно вызвать метод main класса Java из другого метода main, используя отражение.

Использование отражения является обязательным условием для устранения зависимости времени компиляции вызываемого основного класса. Простой подход не дает результатов, поскольку он признает только «открытый» и «нестатический» метод. Предложения?

Ответы [ 2 ]

50 голосов
/ 12 февраля 2011

Не должно быть сложнее, чем вызывать любую другую функцию:

public static void main(String[] args) throws ClassNotFoundException, SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    Class<?> cls = Class.forName("pkg1.pkg2.classname");
    Method meth = cls.getMethod("main", String[].class);
    String[] params = null; // init params accordingly
    meth.invoke(null, (Object) params); // static method doesn't have an instance
}

Но я не вижу много вариантов для этого, единственное, что он покупает, это то, что вы можете скомпилировать программубез ссылки на другой, если вы никогда не используете этот конкретный путь кода, но если это то, что вам нужно, то мы идем;)

1 голос
/ 12 февраля 2011

Если у вас есть 2 java-файла, оба из которых имеют основной метод, вы не можете скомпилировать их как разные проекты и вызвать один из другого?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...