我正在开发一个相对简单的数据包捕获应用程序,我正在使用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();
}
它正确获取captor和filepath,成功遍历所有数据包,但当它尝试在代码块的末尾写入时,JVM崩溃。
我的问题是,为什么我的应用程序在尝试关闭JpcapWriter时会崩溃?
UPDATE :我刚刚发现的奇怪之处在于它实际上是在写入文件。它只是在写完后崩溃了。我在收盘后添加了一个print语句,它从未到达它。
答案 0 :(得分:0)
我发现其他几个人和我有同样的问题。我不确定为什么但是删除关闭作者的调用解决了我的问题。该文件现在正确写入,没有问题。目前,我对此感到满意,但我可能会在以后再回到这个问题。
UPDATE:当调用停止捕获时,结果是文件关闭。当捕获线程关闭时,它关闭了捕获器,而后者又为我关闭了写入器。本质上,我试图告诉它关闭作者,因为作者已经关闭,这导致JVM崩溃。