簡體   English   中英

nodejs child_process exec'java -version'

[英]nodejs child_process exec 'java -version'

嘿,我在nodejs shell中運行以下代碼

 exec = require('child_process').exec 

現在我有exec var作為函數。 然后我跑

 exec('java',function (error, stdout, stderr) {console.log(error)});

 exec('java -version',function (error, stdout, stderr) {console.log(error)})

第一個輸出是:

  { [Error: Command failed: The system cannot find the path specified.

但是輸出繼續,我從java得到真正的輸出,即:

     Usage: java [-options] class [args...]
     (to execute a class)
     or  java [-options] -jar jarfile [args...] 
     (etc....)

我對'java -version'的第二次嘗試也是如此

   { [Error: Command failed: The system cannot find the path specified.
     java version "1.7.0_10"
     Java(TM) SE Runtime Environment (build 1.7.0_10-b18)
     Java HotSpot(TM) 64-Bit Server VM (build 23.6-b04, mixed mode)
     ] killed: false, code: 1, signal: null }

有任何想法嗎? 謝謝橡樹

ps

我在運行Windows 8 ,我有JAVA_HOME設置和我有%JAVA_HOME%\\bin在我的PATH如果我在命令行中運行java -version一切正常。 “節點-版本” v0.10.22

編輯:

從nodejs文檔

“成功時,錯誤將為null。錯誤時,錯誤將是Error的一個實例,而err.code將是子進程的退出代碼,而err.signal將被設置為終止該進程的信號。”

有趣的是,在研究了nodejs源代碼之后,我看到exec函數使用了'cmd /s /c [command]'然后我嘗試在不使用cmd的情況下運行相同的命令。 發現我仍然收到這條信息。 原來,該錯誤與cmd有關,因此我進行了搜索並提出了解決方案。

對於正確的答案,請轉到此處: https : //stackoverflow.com/a/13343337/1211174

總結答案:cmd具有自動運行的選項。 並且此自動運行失敗。 然后將cmd寫入stderr,然后許多nodejs失敗-因為它們只是檢查if (error != null)而沒有檢查error.code ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM