2017-01-09 12 views
0

ノードモジュールがグローバルにインストールされています:rollup他のモジュールもあります。コマンドプロンプト(win 10)を開き、rollup -vと入力すると、モジュールのバージョンが返されます。私はProcessBuilder/Processを使ってこれを達成しようとしています。私はjava -versionまたはnode -vそれが働いていると、それをテストする場合Java ProcessBuilderを使用してグローバルにインストールされたノードモジュールを呼び出す

java.io.IOException: Cannot run program "rollup": CreateProcess error=2, The system cannot find the file specified

ProcessBuilder pb = new ProcessBuilder("rollup","-v"); 
File log = new File("log.txt"); 
pb.redirectErrorStream(true); 
pb.redirectOutput(Redirect.appendTo(log)); 

Process p = pb.start(); 
assert pb.redirectInput() == Redirect.PIPE; 
assert pb.redirectOutput().file() == log; 
assert p.getInputStream().read() == -1; 

それは次のエラーを返します。

は、ここに私のJavaコードです。

私は実用的な解決策を持っていますが、私はそれが気に入らず、少し面倒です。私はbatファイルを作成します。

//test.bat 
rollup -v 

は、それから私は、batファイルProcessBuilder pb = new ProcessBuilder("test.bat");を実行して取り組んでいるが、将来的には、私はrollupに他のパラメータを渡したいと私はすべてのための別のバットファイルを作成する必要はありませんパラメータ。

私は何かが不足していると私は何を知っていないと思いますか?私はAPIを処理するのが初めてです。あなたの最初の問題のために、しかし、あなたの問題を回避するための

答えて

1

未解決策:

あなたは​​にtest.batを変更し、パラメータとそれを呼び出すことができます。

この場合、%*は、バッチファイルに与えられたすべてのパラメータを表します。これで、必要に応じてさまざまなパラメータでプログラムから呼び出すことができます。

関連する問題