【发布时间】:2012-09-18 17:31:55
【问题描述】:
编辑:
按照您的建议进行所有更改后,问题仍然存在。调试器说引理变量为空,但我应用的修复并没有让事情变得更好。所以,由于截止日期的问题,我决定从另一个角度来解决这个问题。谢谢大家的帮助。 :)
我正在编写一个小程序,NullPointerException 让我发疯。我有两个班级:SystemDir 和 Search。第一个只是初始目录和搜索引理的封装。 Search 类如下所示。简而言之,我希望一个线程搜索第一级目录,另一个线程扩展子目录。这就是我得到异常的地方。异常字符串是
Exception in thread "Thread-0" java.lang.NullPointerException
at Search.searchFiles(Search.java:59)
at Search.<init>(Search.java:53)
at SystemDir.<init>(SystemDir.java:61)
at Search$1.run(Search.java:45)
at java.lang.Thread.run(Thread.java:679)
其中 3 个点是最终循环内的 t.start()、searchFiles 方法调用、上面的一些行以及 run 方法中的新 SystemDir 调用。你能帮帮我吗?
public class Search {
private Thread t;
public Search(String[] subFiles, final String[] subDir, final String lemma) {
t = new Thread(new Runnable() {
@Override
public void run() {
for(int i=0;i<subDir.length;i++) {
try {
System.out.println(subDir[i]);
new SystemDir(subDir[i], lemma);
}
catch (NoDirectoryException ex) {
Logger.getLogger(Search.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
});
searchFiles(subFiles,lemma);
}
private void searchFiles(String[] subFiles, String lemma) {
for(int i=0;i<subFiles.length;i++) {
t.start();
if(subFiles[i].contains(lemma)) {
System.out.println(subFiles[i]);
}
}
}
}
【问题讨论】:
-
当您询问有关异常的问题时,请始终提供实际异常,即前几行,并指出哪行对应于异常行号。请编辑您的帖子以提供此信息。
-
你能正确格式化你的代码吗?当你的压痕遍布地图时,真的很难理解。
-
SystemDir 构造函数中的问题
-
你真的在循环中启动线程吗?你只能这样做一次对吗?您的意思是在数组中的每个元素上启动一个新线程吗?
-
另外,我仍然不确定哪条线路在抛出 NPE。
t.start()行?这没有任何意义。
标签: java multithreading nullpointerexception