我正在开发一个相对简单的数据包捕获应用程序,并且正在使用 Jpcap 库。在我将保存功能添加到我的程序之前,一切都在工作。
我的写功能
public void write() {
try {
writer = JpcapWriter.openDumpFile(captor, fileName);
} catch (IOException e) {e.printStackTrace();}
for (Packet packet : this.packets) {
writer.writePacket(packet);
}
writer.close();
}
它正确地获取了捕获者和文件路径,成功地循环了所有数据包,但是当它尝试在代码块的末尾写入时,JVM 崩溃了。
我的问题是,为什么我的应用程序在尝试关闭 JpcapWriter 时会崩溃?
更新 : 我刚刚发现的奇怪的事情是它实际上是在写入文件。它只是在写入后崩溃。我在关闭后添加了一个打印语句,但它永远不会到达它。
请您参考如下方法:
我发现其他几个人和我有同样的问题。我不知道为什么,但删除关闭作家的电话解决了我的问题。该文件现在可以正确写入,并且没有问题。目前,我对它的工作感到满意,但我可能会在以后回到这个问题。
更新:事实证明,当调用停止捕获时文件会关闭。当捕获线程关闭时,它会关闭捕获器,这反过来又会为我关闭编写器。本质上,我试图告诉它关闭编写器,因为编写器已经关闭,这导致 JVM 崩溃。


