Java 使用线程和bufferedWriter时出现空指针异常

Java 使用线程和bufferedWriter时出现空指针异常,java,nullpointerexception,serial-port,arduino,Java,Nullpointerexception,Serial Port,Arduino,我试图通过java将arduino连接到我的计算机上,我在网上找到了主代码,该代码将arduino发送到stdo。我一直在想如何将它放在一个文件中,我创建了“Scrittore”类,虽然在没有线程的情况下使用它一切都很好,但在使用主代码时,它给了我错误: **Exception in thread "Thread-1" java.lang.NullPointerException at ricezionearduinoseriale.Scrittore.scrivi(Scrittore.

我试图通过java将arduino连接到我的计算机上,我在网上找到了主代码,该代码将arduino发送到stdo。我一直在想如何将它放在一个文件中,我创建了“Scrittore”类,虽然在没有线程的情况下使用它一切都很好,但在使用主代码时,它给了我错误:

**Exception in thread "Thread-1" java.lang.NullPointerException
    at ricezionearduinoseriale.Scrittore.scrivi(Scrittore.java:32)
    at ricezionearduinoseriale.SerialTest$SerialReader.run(SerialTest.java:67)
    at java.lang.Thread.run(Thread.java:724)**
有人能帮我找到这个bug或者我做错了什么吗?(我刚开始使用java,在这方面我还很在行)

}


}

您在scrivi函数和chiudi函数中使用的是bw、fw变量,它们是类的私有变量,而在open函数中使用的是声明为

FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
我相信这条线应该是,

fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);

希望,这会有所帮助….

我强烈怀疑之前抛出了异常,但您通常会忽略它,因为您捕获了大量异常并将其转储到System.out,然后继续,就好像它们从未发生过一样。这几乎不是您希望发生的事情。我会记住这一点,但我没有编写这一部分,错误出现在调用bw.write(content);,时的scrivi()方法中;,从代码中去掉这一点可以消除错误,这只是表明
bw
为空-这很容易,因为为
bw
分配非空值的方法失败了。我也在一个单独的项目(没有线程)上尝试了该代码,它工作时不会给出错误,并且创建或编辑了文件,线程是否可能会干扰FileWriter&BufferedWriter?我不想猜测,但我想说的是,首先要做的是修复异常处理。大多数方法都应该声明抛出IOException,而不捕获任何内容。
FileWriter fw = new FileWriter(file.getAbsoluteFile());
BufferedWriter bw = new BufferedWriter(fw);
fw = new FileWriter(file.getAbsoluteFile());
bw = new BufferedWriter(fw);