【发布时间】:2013-11-24 16:00:26
【问题描述】:
我正在开发一个简单的 Java Swing 应用程序,我对 main() 方法 args 输入参数有一个愚蠢的怀疑:
我有以下代码:
package com.test.login;
import java.awt.Container;
import java.awt.Dimension;
import javax.swing.JFrame;
import org.jdesktop.application.SingleFrameApplication;
public class MainWindows extends SingleFrameApplication {
private static final int FIXED_WIDTH = 880;
private static final Dimension INITAL_SIZE = new Dimension(FIXED_WIDTH, 440);
// First execute the LoginFrame class to open the login windows:
public static void main(String[] args) {
System.out.println("Inside: MainWindows() ---> main()");
if(!(args[0].equals("loggedIn"))){
launch(LoginFrame.class, args);
}
}
@Override
protected void startup() {
// TODO Auto-generated method stub
System.out.println("Inside MainWindows ---> startup()");
JFrame mainFrame = this.getMainFrame(); // main JFrame that represents the Windows
mainFrame.setTitle("My Appliction MainFrame");
mainFrame.setPreferredSize(INITAL_SIZE);
mainFrame.setResizable(false);
show(mainFrame);
}
}
main()方法采用经典的args[]数组参数(即String数组)
我希望如果这个数组中的第一个元素不是字符串 loggedIn 它会启动 LoginFrame.class 否则不做任何事情并且 startUp() 会自动调用渲染 JFrame 窗口的方法。
问题是当我尝试执行此类时,我在 Eclipse 控制台中收到以下错误消息:
Inside: MainWindows() ---> main()
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at com.test.login.MainWindows.main(MainWindows.java:19)
为什么?问题出在哪里?我该如何解决?
Tnx
安德烈亚
【问题讨论】:
-
可能没有任何参数。您必须先检查长度。数组的长度可以为 0。即使有预期的参数,您也应该确保在访问数组中的元素之前传递了参数。
-
...您是否传递了任何命令行参数?
-
你怎么称呼main??
-
我没有使用命令行,但我从另一个类调用 main,这样:args[0] = "loggedIn";启动(MainWindows.class, args);