How to call main() method of a class using reflection in java

java, reflection

Solution

For your stated requirements (dynamically invoke the main method of a random class, with reflection you have alot of unnecessary code.

- You do not need to invoke a constructor for the class

- You do not need to introspect the classes fields

- Since you are invoking a static method, you do not even need a real object to invoke the method on

You can adapt the following code to meet your needs:

try {
    final Class<?> clazz = Class.forName("blue.RandomClass");
    final Method method = clazz.getMethod("main", String[].class);

    final Object[] args = new Object[1];
    args[0] = new String[] { "1", "2"};
    method.invoke(null, args);
} catch (final Exception e) {
    e.printStackTrace();
}

Problem

When calling the main method of a Java class from another main method using reflection, ``` Class thisClass = loader.loadClass(packClassName); Method thisMethod = thisClass.getDeclaredMethod("main",String[].class); thisMethod.invoke(null, new String[0]); ``` Should i create newInstance() or simply call main() as it is static.

Original source