package test;
import java.io.*;
import java.util.*;
import javax.comm.*;public class SimpleRead {
    static CommPortIdentifier portId;
    static Enumeration portList;    InputStream inputStream;
    SerialPort serialPort;
    Thread readThread;
    static boolean b;    public static void main(String[] args) {
        portList = CommPortIdentifier.getPortIdentifiers();
        
        while (portList.hasMoreElements()) {//无法进入此循环
            portId = (CommPortIdentifier) portList.nextElement();
                          
        }
    }
}我已经将 win32com.dll 放在jdk的bin目录下
将comm.jar和javax.comm.properties文件放在lib目录下
不知道什么原因  无法获得计算机系统的所有串口
请高手指点一二

解决方案 »

  1.   

    jdk1.2以上的版本需要把comm.jar放在jdk/jre/lib/ext目录下
      

  2.   

    其他的配置不用还用改变吗win32com.dll 
    javax.comm.properties
    我试验了一下 上面的两个文件还在原来的路径上
    将comm.jar放在了comm.jar放在jdk/jre/lib/ext的目录下
    不知道什么原因还是无法找到串口呀
      

  3.   

    1。把 win32com.dll 放在 <jdk>\jre\bin 目录. 2。把 comm.jar in 放在 <jdk>\jre\lib\ext目录. 3。把 javax.comm.properties 放在 <jdk>\jre\lib目录 . 是放在jdk的jre下。不是直接jre下。
      

  4.   

    你的程序是web的还是桌面的?用的web容器需要JAVA_HOME环境变量吗?JAVA_HOME设置对了吗?
      

  5.   

    是桌面的呀
    我试验了一下  的确ok了
    谢谢呀  大侠呀 我还有几个问题要问
    直接的jre和jdk下的jre有什么区别呀 
    jdk下有类库 jdk下的jre也有类库 直接的jre下还有类库
    java执行时调用的时那个类库呀 他们之间有什么区别呀!
    另外Enumeration是个接口,我并没没有实现这个接口,为什么在程序理可以直接使用这个接口中的方法portList.hasMoreElements()那呀,其中的奥妙是什么那呀!
    谢谢了呀!小生感激涕零!
      

  6.   

    文档上是说放在jdk的jre下面。如果不是开发人员没有安装jdk只安装了jre那放在jre下也可以,我试过了。关键是看运行程序用的是哪一套jre。用哪一套就放在哪一套下。
    jdk的jre是给jdk里的一些.jar用的。因为他们也是用java写的,所以这套jre是给他们用的。这套jre少了服务器的一些api。任何不用到这些api的java程序都可以用这套不完整的jre.CommPortIdentifier.getPortIdentifiers();这个方法返回的是一个实现了Enumeration接口的对象。是他实现的不是你实现的。
      

  7.   

    啊 原来如此
    知道了 谢谢呀
    那我怎样才能选择自己运行的jre那呀
      

  8.   

    是我自己选择运行的jre还是系统默认选择那呀
      

  9.   

    CommPortIdentifier.getPortIdentifiers();这个方法返回的是一个实现了Enumeration接口的对象。是他实现的不是你实现的。我感觉还是一头雾水,他具体是怎么实现的那,不理解。能不能给具个例子呀。谢谢你了!