我一直在尝试从其他类运行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
答案 0 :(得分:2)
查看StackOverFlowError中的堆栈跟踪。它会告诉你什么方法称为什么,以及什么行号。问题是你的main()调用一个方法来调用一个调用main()的方法来调用...
解决方案是提取重复main()所需的功能,并将其放在单独的方法中。然后你可以调用它而不会导致无限递归。
调用main()是合法的,除了JVM会调用它来启动程序之外,它并不是特别的。但是,实际上想要再次调用main()是不常见的。