? ? rxtx是java串口通信中所使用的jar包期升,目前我正在完成一個(gè)上位機(jī)的任務(wù)镊尺,通過(guò)串口發(fā)送指令寸莫,讀取數(shù)據(jù)悲立,實(shí)時(shí)顯示硬件返回的數(shù)據(jù)鹿寨。
通過(guò)考察選定rxtx作為我所使用的串口通信框架,根據(jù)其他博客得知其使用說(shuō)明薪夕,如下圖:
我按照步驟做了一下脚草,讀取串口名稱操作沒(méi)有問(wèn)題,但寫(xiě)入串口操作導(dǎo)致虛擬機(jī)報(bào)錯(cuò)原献,報(bào)錯(cuò)信息如下:
```
#
# A fatal error has been detected by the Java Runtime Environment:
#
#? EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x0000000180004465, pid=19324, tid=6140
#
# JRE version: Java(TM) SE Runtime Environment (10.0.1+13) (build 10.0.1+13-LTS)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (10.0.1+13-LTS, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
# C? [rxtxSerial.dll+0x4465]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# If you would like to submit a bug report, please visit:
#? http://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
```
滿世界找bug后得到如下結(jié)果:
1.jar包版本和dll不匹配
2.切換工作空間
3.將jar包放入jre/lib下的ext文件夾
1和2試了都不行馏慨,期間還獲知dll放在jre的bin目錄下即可,但沒(méi)有解決我的問(wèn)題姑隅,在使用3方法的時(shí)候写隶,由于我使用的jdk版本是10.0.1,該版本下沒(méi)有ext文件夾讲仰,最終嘗試使用降低版本的方法得到這個(gè)文件夾在試試慕趴,筆者安裝JDK1.8后,jar包放入ext文件夾鄙陡。如下圖:
修改eclipse運(yùn)行環(huán)境(window->preferences->java->installed jre)點(diǎn)擊add,增加jdk1.8的目錄并選中柔吼,點(diǎn)擊apply毒费,如下圖:
如果你是新建java工程丙唧,到這里就行了愈魏,新建工程默認(rèn)使用新環(huán)境。但更改環(huán)境前的java工程想际,使用的還是jdk10.0.1培漏,如果是這種情況,則需要修改該工程的運(yùn)行環(huán)境胡本,右鍵工程牌柄,選中buildpath,進(jìn)入彈窗侧甫,選中jdk10珊佣,點(diǎn)擊remove移除蹋宦。
在點(diǎn)擊Add Library,在彈窗中選擇jre system library咒锻,選擇jdk1.8即可
經(jīng)過(guò)一番纏斗冷冗,終于把rxtx的bug解決了,說(shuō)實(shí)話這jar居然要放到虛擬機(jī)里執(zhí)行還是第一次見(jiàn)惑艇,有點(diǎn)東西蒿辙。成果如圖:
rxtx詳細(xì)操作代碼在下一篇博客里再介紹,就這樣滨巴。