什么是在运行时导致空指针异常?

时间:2015-04-26 17:41:16

标签: java swing nullpointerexception

我的代码编译,但我在运行时收到此错误:

Exception in thread "main" java.lang.ExceptionInInitializerError
    at GUI.<init>(GUI.java:46)
    at GUI.main(GUI.java:252)
Caused by: java.lang.NullPointerException
    at java.util.Objects.requireNonNull(Objects.java:203)
    at java.util.Arrays$ArrayList.<init>(Arrays.java:3813)
    at java.util.Arrays.asList(Arrays.java:3800)
    at db.<clinit>(db.java:23)
    ... 2 more

这是导致错误的代码:

public static String strLine;
public static String[] filearray;
public static List<String> list = Arrays.asList(filearray);


public static void load() throws IOException{

FileInputStream in = new FileInputStream("slist.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(in));

filearray = new String[4];

while ((strLine = br.readLine()) != null) {

for (int j = 0; j < filearray.length; j++){
filearray[j] = br.readLine();

}

}
in.close();

错误中引用的第46行:

JList stafflist = new JList(db.list.toArray());

我正在尝试将文本文件作为数组加载并将其添加到JList人员列表中,但是我收到了运行时错误。

2 个答案:

答案 0 :(得分:1)

这是在你的宣言中:

public static String[] filearray;
public static List<String> list = Arrays.asList(filearray);

fileArray为空,您正在尝试围绕它创建一个List。

您可以在此处初始化fileArray

public static String[] filearray = new String[4];

将值放入Arrays.asList(filearray)后调用filearray

答案 1 :(得分:0)

我在您的代码中看到的问题是:

public static String[] filearray;
public static List<String> list = Arrays.asList(filearray);

您正尝试使用filearray方法转换当前为空的Arrays.asList()

您应首先初始化filearray