2012-03-06 97 views
1

我在rake腳本中有兩種方法,兩種方法都使用system "<SomeCommand>",一種是用文件調用JSLint,這很好。一個是調用YUICompressor,它總是以127錯誤代碼失敗。系統命令經常失敗並退出代碼127

奇怪的是我可以調用Ruby腳本正在運行的EXACT命令,它工作正常,我將它傳遞給一個文件,並輸出一個縮小版本。然而,當我運行它認爲Ruby腳本總是炸彈......

它基本上是這樣的:

system java -jar c:/dump/tools/yuicompressor-2.7.4.jar c:/dump/src/input_file.js c:/dump/src/output_file.min.js

我知道這看起來可怕與所有的絕對路徑,但多數民衆贊成在如何構建腳本目前的工作絕對路徑,但該命令工作正常,如果我只是在命令行上調用它,但是當我通過Rake/Ruby運行它只是炸彈......但另一個系統調用JSLint工作正常,但是調用批處理文件通過絕對路徑...

在這onlili上找不到任何信息嗯,有人在上面看到什麼奇怪的東西?

只是爲了確認所有文件存在於相關位置。

+1

你試過一起'java'絕對路徑? – 2012-03-06 17:07:20

+2

用127退出通常意味着「找不到命令」,因此很可能找不到「java」。 – 2012-03-06 19:11:29

+1

嘗試比較shell $ PATH(一個來自bash和一個來自ruby腳本),並看看你想出什麼。 – Jwosty 2012-03-07 04:42:05

回答

3

因爲其他人在windows上遇到同樣的問題而生氣,這似乎是由於system無法將命令作爲一個大字符串處理,所以您需要將它分解爲參數,所以這裏是我怎麼得到它的工作:

# .. in paths is just used as a wildcard here 
java_absolute_path = "c:/../java.exe" 
yui_compressor_path = "c:/../yuicompressor-2.7.4.jar" 
input_file = "c:/dump/src/input_file.js" 
output_file = "c:/dump/src/output_file.min.js" 
system java_absolute_path, "-jar", yui_compressor_path, input_file, "-o", output_file 

這種方法工作正常。

1

即使使用絕對路徑和參數作爲參數,我也有使用mklink命令的相同問題。

解決方案是使用call命令。

系統( 「呼叫 mklink ......」)

+0

mklink是一個函數,因此不可用於Windows命令shell;這就是你的解決方案的原因。 – yaauie 2013-06-22 11:59:32

相關問題