1

以下のコードは、この行「 bufferedReader.readLine(); 」の後で完全に実行されていません。リモート PC の IP アドレスを指定せずにシステム コマンドを実行すると、プログラムは正常に動作します。

class Test    
{       
public static void main(String arg[])    
{    
     Process p;    
     Runtime runTime;    
     String process = null;    
     try {    
        runTime = Runtime.getRuntime();    
        p = runTime.exec("sc \\xx.xx.xx.xx query gpsvc");      // For Windows    
        InputStream inputStream = p.getInputStream();    
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream);    
        BufferedReader bufferedReader = new BufferedReader(inputStreamReader);    
        String line = bufferedReader.readLine();    
        process = "&";    
        while (line != null) {    
            line = bufferedReader.readLine();    
            process += line + "&";    
        }    
        StringTokenizer st = new StringTokenizer(proc, "&");    
        System.out.println("token size "+st.countTokens());    
        while (st.hasMoreTokens()) {        
            String testData = st.nextToken();    
        bufferedReader.close();    
        inputStreamReader.close();    
        inputStream.close();    
        }    

     } catch (IOException e) {    
       System.out.println("Exception arise during the read Processes");    
       e.printStackTrace();    
     }    

}    
}        
4

1 に答える 1

1

execメソッド内のコマンドを確認してください

p = runTime.exec("sc \\xx.xx.xx.xx query gpsvc");

ここでは構文が間違っています。これをコマンド プロンプトから実行すると、次の質問が表示されます。

Would you like to see help for the QUERY and QUERYEX commands? [ y | n ]:

y または n を入力するまで、プログラムは戻りません。プログラムが終了していないため、コンソール出力を読み取ることができず、それがプログラムが動かなくなっている理由ですString line = bufferedReader.readLine();

于 2012-11-28T12:26:26.087 に答える