跪求!串口应用程序打包后不能用 前一段时间编写了一个串口应用程序,在JBuilder9中运行一切正常。能发能收。可生成.exe文件后程序能打开可是什么反应也没有,不能发也不能收。而且生成.exe文件时也不能马上成功,需要等很长时间它才能生成。请都各位大侠给指点一二!!谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我现才发现在生成JAR文件时就不好使了,我看java.comm.*这个扩展类已经加进去了,可是好像不执行这个扩展类啊,求教高人!!谢谢了 先不要生成exe的文件,先生成jar文件,看看调用是否正常,估计exe没有反应是后台已经报错了还有使用JBX+sp,或是JB2006+SP吧,JB9即使打了补丁,也有不少bug jar正常了以后,就生成带控制台的exe文件,看看是否正常,都可以了在生成纯的exe文件 我的机器太慢了,用JB2006运行不起来。我先生成JAR文件也不好使,都是一样的错误。我的感觉就是找不到串口! 环境是一样的,所以应该都可以找到串口,不过最保险的办法就是在控制台执行jar文件的时候,看看那控制台里面打印的信息是不是报错看看错误是什么,一般都能找到问题所在 你怎么执行jar的?应该是在dos窗口下执行 java -jar xxx.jar这样执行的,所以如果 xxx.jar报错了,应该会打印在dos窗口里面 首先要确认是否获得了可以使用的COM口Enumeration en = CommPortIdentifier.getPortIdentifiers(); if(en!=null) { CommPortIdentifier portId = null; while (en.hasMoreElements()) { portId = (CommPortIdentifier) en.nextElement(); /*如果端口类型是串口,则打印出其端口信息*/ if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { arrayList.add(portId.getName()); } } }这段是关键,记录一下arrayList的长度和内容看看,就是添加 System.out.println();这样的调试信息看看,是否获得了COM,如果没有获得,而在JB里面能获得,那么多半是配置问题 CommPortIdentifier portId; Enumeration en = CommPortIdentifier.getPortIdentifiers(); while (en.hasMoreElements()) { portId = (CommPortIdentifier) en.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { choice1.add(portId.getName()); } } choice1.select(parameters.getPortName());这段程序好像就不执行!!! 所谓的配置问题就是由于 JB使用的JDK和在DOS窗口里面调用的JDK不一样造成的,也就是(例如windows) win32com.dll和javax.comm.properties 要拷贝到dos里面调用的JDK的对应目录 这个我也做了好多遍了,反是JDK和JB里相的目录我都放了相同的文件.win32.dll和javax.comm.properties 应该是JDK没有搞对,调试过很多这样的问题,最后都是没有放对造成的 也有可能在dos里面执行的是jre,而不是jdk 我刚才又调试了一遍,都是按comm.jar那里给的说明文件弄的啊。不过我用的JDK是1.4.2说明文件是JDK1.2的,不知道有没有什么不同。 看看你的机器安装了几个jdk和jre 然后都要把win32.dll和javax.comm.properties拷贝到对应的目录中 我就装了个jdk1.4.2再就是JB自带的jdk1.4了,这两个我全装了。我现在也认为是这里的问题,可是怎么也改不对! 太谢谢你了,我找到了!我安jdk时安的C盘根目录下了,可是它自动在program下安了一个,把那两文件添进去就好了!十分感谢!! jdk1.5 抽象类Calendar能实例化了? 求生成AIXS2 客户端的好插件 在前台页面中利用javascript移动图片后怎样在后台用java将移动后的效果生成出来? 关于“向上类型转换” 请教基本语法this.class.getClassLoader()怎么理解? 泛型问题 高分(100)求JAVA小程序和说明文档.... 这样的逻辑,SQL语句怎么写呢?高手指教 大家都是怎么学java的。 一个反射问题 如何结束阻塞的线程(在线等待) oracle 和 tomcat 的端口冲突怎么解决
看看错误是什么,一般都能找到问题所在
应该是在dos窗口下执行 java -jar xxx.jar
这样执行的,所以如果 xxx.jar报错了,应该会打印在dos窗口里面
Enumeration en = CommPortIdentifier.getPortIdentifiers();
if(en!=null)
{
CommPortIdentifier portId = null;
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
/*如果端口类型是串口,则打印出其端口信息*/
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
arrayList.add(portId.getName());
}
}
}
这段是关键,记录一下arrayList的长度和内容看看,就是添加 System.out.println();这样的调试信息看看,是否获得了COM,如果没有获得,而在JB里面能获得,那么多半是配置问题
while (en.hasMoreElements()) {
portId = (CommPortIdentifier) en.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
choice1.add(portId.getName());
}
}
choice1.select(parameters.getPortName());这段程序好像就不执行!!!
拷贝到对应的目录中