-3

重複の可能性:
NetBeans 6.8とEclipseを使用してこのコードを実行すると、出力が異なるのはなぜですか?

EclipseとNetBeans6.8を使用して次のコードを実行している場合。コンピューターで使用可能なCOMポートを確認したい。Eclipseで実行すると、使用可能なすべてのCOMポートが返されますが、NetBeansで実行すると、ポートが見つからないようです。

public static void test() {
    Enumeration lists=CommPortIdentifier.getPortIdentifiers();

    System.out.println(lists.hasMoreElements());
    while (lists.hasMoreElements()) {
        CommPortIdentifier cn =
          (CommPortIdentifier)lists.nextElement();

        if ((CommPortIdentifier.PORT_SERIAL==cn.getPortType())) {
            System.out.println(
              "Name is serail portzzzz " +
              cn.getName()+
              " Owned status " +
              cn.isCurrentlyOwned());

            try {
                SerialPort port1=(SerialPort)cn.open("ComControl",800000);
                port1.setSerialPortParams(
                  9600,
                  SerialPort.DATABITS_8,
                  SerialPort.STOPBITS_1,
                  SerialPort.PARITY_NONE);
                System.out.println("Before get stream");
                OutputStream out=port1.getOutputStream();
                InputStream input=port1.getInputStream();
                System.out.println("Before write");
                out.write("AT".getBytes());
                System.out.println("After write");
                int sample=0;
                //while((( sample=input.read())!=-1)){
                System.out.println("Before read");
                //System.out.println(input.read() + "TEsting ");
                //}
                System.out.println("After read");
                System.out.println(
                  "Receive timeout is " +
                  port1.getReceiveTimeout());
            }
            catch(Exception e) {
                System.err.println(e.getMessage());
            }
        }
        else {
            System.out.println(
              "Name is parallel portzzzz " +
              cn.getName() +
              " Owned status " +
              cn.isCurrentlyOwned() +
              cn.getPortType() +
              "    ");
        }
    }
}

Netbeansを使用した出力、

false

Eclipseを使用した出力、

true
Name is serail portzzzz COM1 Owned status false
Before get stream
Before write
After write
Before read
After read
Receive timeout is -1
Name is serail portzzzz COM2 Owned status false
Before get stream
Before write
After write
Before read
After read
Receive timeout is -1
Name is parallel portzzzz LPT1 Owned status false2
Name is parallel portzzzz LPT2 Owned status false2
4

1 に答える 1

2

最初の推測では、使用するライブラリはDLLで囲まれたネイティブコードを使用しており、そのコードは見つからず、見逃した前にエラーが発生し、コードはダミーの動作にフォールバックします。

初期化コードを詳しく見て、そこで何が起こるかを確認します。

于 2010-12-26T11:52:29.023 に答える