2014-10-10 25 views
0

我試圖運行此命令的工作:爪哇 - Arduino的 - 使用IDE(使用GUI禁用)錯誤上傳草圖,但它的命令行

"C:\arduino\arduino --upload --board arduino:avr:nano --port COM3 -v ..\config\config.ino" 

它從我的命令行工作。只需幾秒鐘即可完成&的完成。

問題是當我試圖從Java與執行:

String cmd = "C:\arduino\arduino --upload --board arduino:avr:nano --port COM3 -v ..\config\config.ino" 
Process p = Runtime.getRuntime().exec(cmd); 

需要一分鐘來執行,結尾是:

啓動4J:啓動應用程序時發生了錯誤

我也試過ProcessBuilder。我也嘗試將命令保存到批處理文件,然後從Java運行批處理文件...但我得到了相同的結果。

編輯:

如果我命令列運行的批處理文件它也能工作。正如我所說,如果我從Java運行它,它不會。

我意識到如果我從另一個批處理文件運行批處理文件,它也不會工作。

也許對於Java而言,沒有任何問題,但是使用Arduino IDE。

編輯2: 在命令之前添加「start」參數並將其保存到批處理文件似乎工作。然後你只需從java運行批處理。

事情是這樣的:

arduino.bat

"start C:\arduino\arduino --upload --board arduino:avr:nano --port COM3 -v ..\config\config.ino" 

Java代碼

String s = "PATH TO ARDUINO.BAT" 
Process p = null; 
ProcessBuilder pb = new ProcessBuilder(s + "arduino.bat"); 
pb.directory(new File(s)); 
p = pb.start(); 

回答

1

我認爲這個問題是與-v參數的相對路徑。使用完整路徑或使用ProcessBuilder設置 實際工作目錄。

+1

我檢查過,沒有工作。在第一篇文章中增加了更多信息。 – Garcel 2014-10-12 16:20:18

+0

這兩個批處理文件在同一個目錄中嗎? – Lubo 2014-10-12 16:34:29

+1

是的,他們是。我將批處理路徑固定爲直接指向另一批處理。 – Garcel 2014-10-12 18:07:50