从反射调用中忽略System#exit()

时间:2018-03-06 20:42:48

标签: java reflection

我有以下问题。假设一个人有ClassA的沼泽标准主类。 ClassAClassB#main()执行反射调用。 ClassB的main方法在某个时刻执行系统退出,这反过来也会终止ClassA#main()的执行。

现在我的问题如下,有没有办法忽略来自System#exit()主的ClassB因此不会杀死JVM并继续运行ClassA的主方法。这样的事情可能会在ClassB没有大量篡改的情况下发生吗?

将以下非常简单的示例视为用例:

public class ClassA  {

    public static void main(String[] args) {
    try {
        ClassB.class.getMethod("main", String[].class)
            .invoke(null, (Object) null);
    } catch (IllegalAccessException | InvocationTargetException | NoSuchMethodException e) {
        e.printStackTrace();
    }
    }

}

public class ClassB {

    public static void main(String[] args) {
        System.out.println("I am running!");
        System.exit(1);
    }

}

0 个答案:

没有答案