编辑:
进行您建议的所有更改后,问题仍然存在。调试器说引理变量为空,但我应用的修复并没有让事情变得更好。所以,由于截止日期的问题,我决定从另一个角度来解决这个问题。感谢大家的帮助。:)
我正在编写一个小程序,并且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]);
}
}
}
}