从其他类

时间:2015-07-28 12:37:27

标签: java swing

我一直在尝试从其他类运行main方法。我知道swing是单线程的。所以我正在使用此代码

private static void runUpdate(){
    SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        String[] args1={"10"};
        Update.main(args1);
    }
});
}

private void updateButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    runUpdate();
}  

此代码在InventoryMgr类中,我想从Update类运行main方法。

我得到了StackOverFlowError

1 个答案:

答案 0 :(得分:2)

查看StackOverFlowError中的堆栈跟踪。它会告诉你什么方法称为什么,以及什么行号。问题是你的main()调用一个方法来调用一个调用main()的方法来调用...

解决方案是提取重复main()所需的功能,并将其放在单独的方法中。然后你可以调用它而不会导致无限递归。

调用main()是合法的,除了JVM会调用它来启动程序之外,它并不是特别的。但是,实际上想要再次调用main()是不常见的。