java 运行setSerialPortParams时被卡住
发布网友
发布时间:2024-10-19 10:54
我来回答
共2个回答
热心网友
时间:2024-11-15 08:44
最近在使用rxtx编写串口程序,我也遇到这个问题。但奇怪之处在于,在eclipse中通过引入RXTXcomm.jar包和指定其native lib运行并无问题。当把工程export为jar包时,直接运行jar包则出现了程序死掉的情况,后定位到在执行rxtx setserialportparams时程序无法往下进行。在command窗口运行jar发现,窗口出现了如下提示:
WARNING: RXTX Version mismatch
Jar version = RXTX-2.2pre1
native lib Version = RXTX-2.1-7pre16
而在eclipse中运行并没有出现该提示。初步判断应该是RXTXcomm.jar包与加载的dll不匹配。通过将正确版本的dll覆盖原dll,始终出现上述问题,不明白为什么无法加载新的dll版本,好像系统曾经加载过dll后就不再重新加载dll。
想到通过重启电脑,是不是就可以了。但仍然没有效果。。。
既然系统不能加载我想要的dll,那我在程序中自己加载,不知道可不可行。试着在程序的开始加入了这个程序:
void loadrxtxdll(){
String basePath = this.getClass().getProtectionDomain().getCodeSource().getLocation().getPath();
try {
basePath = URLDecoder.decode(basePath,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
System.out.println("basePaht:"+basePath);
if(basePath.endsWith(".jar")){
basePath = basePath.substring(0,basePath.lastIndexOf("/")+1);
}
File f = new File(basePath);
basePath = f.getAbsolutePath();
System.out.println(basePath);
System.load(basePath + "\\rxtxSerial.dll");
}
上述程序是加载与程序jar包同路径的rxtxSerial.dll,将dll拷贝到jar同路径下,运行jar包,成功了!
由此可见,该方法有效。但不明白的是,为何程序不能自动加载新的dll。
热心网友
时间:2024-11-15 08:45
建议改rxtx组件去处理串口事情