java 运行setSerialPortParams时被卡住

java 运行setSerialPortParams时被卡住,第1张

最近在使用rxtx编写串口程序,我也遇到这个问题。但奇怪之处在于,在eclipse中通过引入RXTXcommjar包和指定其native lib运行并无问题。当把工程export为jar包时,直接运行jar包则出现了程序死掉的情况,后定位到在执行rxtx setserialportparams时程序无法往下进行。在command窗口运行jar发现,窗口出现了如下提示:

WARNING: RXTX Version mismatch

Jar version = RXTX-22pre1

native lib Version = RXTX-21-7pre16

而在eclipse中运行并没有出现该提示。初步判断应该是RXTXcommjar包与加载的dll不匹配。通过将正确版本的dll覆盖原dll,始终出现上述问题,不明白为什么无法加载新的dll版本,好像系统曾经加载过dll后就不再重新加载dll。

想到通过重启电脑,是不是就可以了。但仍然没有效果。。。

既然系统不能加载我想要的dll,那我在程序中自己加载,不知道可不可行。试着在程序的开始加入了这个程序:

void loadrxtxdll(){

String basePath = thisgetClass()getProtectionDomain()getCodeSource()getLocation()getPath();

try {

basePath = URLDecoderdecode(basePath,"utf-8");

} catch (UnsupportedEncodingException e) {

eprintStackTrace();

}

Systemoutprintln("basePaht:"+basePath);

if(basePathendsWith("jar")){

basePath = basePathsubstring(0,basePathlastIndexOf("/")+1);

}

File f = new File(basePath);

basePath = fgetAbsolutePath();

Systemoutprintln(basePath);

Systemload(basePath + "\\rxtxSerialdll");

}

上述程序是加载与程序jar包同路径的rxtxSerialdll,将dll拷贝到jar同路径下,运行jar包,成功了!

由此可见,该方法有效。但不明白的是,为何程序不能自动加载新的dll。

两个简单的jsp页面,数据库连接(我给你的是mysql数据库连接示例,后面附sqlserver数据库连接部分关键代码)\x0d\首先是 获取值页面Myjsp 源码:\x0d\\x0d\\x0d\#47;/W3C//DTD HTML 401 Transitional//EN">\x0d\\x0d\ \x0d\ \x0d\ My JSP 'Myjspstarting page\x0d\\x0d\\x0d\ \x0d\\x0d\\x0d\\x0d\-->\x0d\ \x0d\ \x0d\ \x0d\ name:\x0d\ password:\x0d\ \x0d\ \x0d\ \x0d\\x0d\处理页面 Hpjsp 源码:\x0d\\x0d\\x0d\\x0d\#47;/W3C//DTD HTML 401 Transitional//EN">\x0d\\x0d\ \x0d\ \x0d\ \x0d\ My JSP 'Hpjspstarting page\x0d\ \x0d\\x0d\\x0d\ \x0d\\x0d\\x0d\\x0d\-->\x0d\\x0d\ \x0d\ \x0d\ \x0d\ Statement stm = null;\x0d\ \x0d\String url = "jdbc:mysql://localhost:3306/数据名称";//数据库名称就是你的数据库名字\x0d\String driver = "commysqljdbcDriver"; //驱动类位置\x0d\String username = "root"; //数据库登录名称,此处写上你的用户名称\x0d\String pwd = "root"; //数据库登录密码,此处写上你的登录密码\x0d\ try \x0d\ {\x0d\ClassforName(driver);\x0d\con = DriverManagergetConnection(url, username, pwd); //创建Connection连接对象\x0d\stm = concreateStatement(); //创建Statement 命令执行对象\x0d\ } \x0d\ catch (ClassNotFoundException e) \x0d\ {\x0d\// TODO Auto-generated catch block\x0d\eprintStackTrace();\x0d\ } catch (SQLException e) {\x0d\// TODO Auto-generated catch block\x0d\eprintStackTrace();\x0d\}\x0d\\x0d\String name=requestgetParameter("name"); //获取传过来的名称\x0d\String password=requestgetParameter("password");//获取传过来的密码\x0d\\x0d\String sql="insert into user(name,password) values("+name+","+password+")";//数据库添加一条记录sql语句\x0d\\x0d\int temp=stmexecuteUpdate(sql);\x0d\\x0d\if(temp>0)\x0d\{\x0d\ outprint("添加成功");\x0d\}\x0d\else\x0d\{\x0d\ outprint("添加失败");\x0d\}\x0d\//关闭数据库连接\x0d\stmclose();\x0d\conclose();\x0d\\x0d\ %>\x0d\ \x0d\\x0d\注意 连接不同数据库要导入不同的数据库驱动包 你要导入才行啊\x0d\附 sqlserver数据库连接 部分关键代码:\x0d\private static Connection con = null;\x0d\private static Statement stm = null;\x0d\\x0d\private static String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=数据库名称";\x0d\private static String driver = "commicrosoftjdbcsqlserverSQLServerDriver";//与mysql有所不同\x0d\private static String username = "sa";//默认用户\x0d\private static String pwd = "123"; //密码\x0d\\x0d\static {\x0d\try {\x0d\ClassforName(driver);\x0d\\x0d\con = DriverManagergetConnection(url, username, pwd);\x0d\Systemoutprint("连接成功!");\x0d\stm = concreateStatement();\x0d\} catch (ClassNotFoundException e) {\x0d\// TODO Auto-generated catch block\x0d\eprintStackTrace();\x0d\} catch (SQLException e) {\x0d\// TODO Auto-generated catch block\x0d\eprintStackTrace();\x0d\}\x0d\}

以上就是关于java 运行setSerialPortParams时被卡住全部的内容,包括:java 运行setSerialPortParams时被卡住、java在jsp页面如何直接执行sql、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9461520.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存