0

好吧,我在一个使用 rxtxSerial.dll 的项目中(顺便说一句,问题很大)。

无论如何,我对 GUI 进行了修改以使其更加用户友好,最初程序显示主窗口,并且可以打开其他一些框架,用户可以在其中监视我工作的公司设计的某些设备。所以当用户想要关闭hole程序和openend的任何窗口时,它会出现一个对话框,要求用户自己关闭打开的窗口,然后关闭程序,这真的很难看,所以我想:让我们让它变得更好;这就是我所做的:

JDialog打开使用串行通信的 s 时,如果用户提示关闭程序而不是退出之前,我只是保存它的引用以供将来使用,程序执行以下代码以确保调用各个侦听器,就像停止从串行读取一样港口:

    for (Window w : openedWindows)
    {
        w.getToolkit().getSystemEventQueue().postEvent(
            new WindowEvent(w, WindowEvent.WINDOW_CLOSING));
    }

当用户关闭对话框时程序不会崩溃,因此WindowListener负责关闭通信的 s 上没有问题,有时在打开在线窗口时提示关闭时它会崩溃(在串行通信方面) ,实际上用户看不到崩溃本身(只要他查看程序文件夹中的 hs_err_pid.log 文件)并且发生大约 20% 的关闭与在线窗口。hs_err 中的崩溃就像:siginfo: ExceptionCode=0xc0000005, writing address 0x17adfa88所以我想它正在发生的是 dll 在它已经关闭之后尝试写入 java 的内存,因此 jvm 崩溃(如果我错了,请纠正我)。

我想要的是一种不生成那些错误日志文件的方法,它可以解决问题或者只是一种隐藏这些文件的方法,如果可能的话,我认为答案不是。

我认为可能的修复方法之一是在关闭 jvm 本身之前强制卸载 dll 或“要求”卸载 dll 并等到它被卸载。

有任何想法吗?

提前致谢。

4

1 回答 1

0

解决了我从 rxtx 迁移到 jSSC 的问题:http ://code.google.com/p/java-simple-serial-connector/

现在一切都很顺利!将 dll 集成到适用于 Windows、linux、mac 和 solaris 的 .jar 中,并具有系统自动检测功能。

节省了我很多工作!

这些崩溃仍然没有明确的原因。

于 2012-10-05T17:00:51.753 回答