2017-04-06 11 views
0

node.jsのコマンドラインインターフェイスでアプリケーションを使用する方法を説明します。ここにnode.jsコード:node.jsの子プロセスからCLIアプリケーションを使用するには?

var spawn = require('child_process').spawn; 
var child = spawn('java', ['HelloWorld']); 

child.stdout.pipe(process.stdout); 
child.stdin.write("tratata\r\n;"); 

child.stdin.end(); 

java HelloWorld cli appが実行されます。

は、ここでは、Javaコードです:

import java.io.Console; 

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("started"); 

     Console console = System.console(); 

     while (true) { 
      String s = console.readLine(); 
      System.out.println("Your sentence:" + s); 
     } 
    } 
} 

が、それは動作しません。 child.stdin.write実行ファイル - 何も起こっていません。

答えて

0

免責事項:私はJavaについては何も知らない。

私の推測では、java.io.Consoleが、それによってノードによって渡されてstdin/stdout/stderrデバイスを回避、コンソールデバイス(ほとんどのUnixライクなOS'es上/dev/tty)自体を開けるように、単に標準入力からの読み込みよりも多くを行うことです。

あなたがjava.io.BufferedReaderを使用している場合、それは良い作品:

import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.BufferedReader; 

public class HelloWorld { 
    public static void main(String[] args) { 
     System.out.println("started"); 

     BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 

     while (true) { 
      try { 
       String s = reader.readLine(); 
       if (s == null) return; // end of stream reached 
       System.out.println("Your sentence:" + s); 
      } catch(IOException e) { 
      } 
     } 
    } 
} 
関連する問題