2015-02-24 109 views
4

我需要從PowerShell調用一個java程序(jar文件)。 下面的代碼工作:如何從PowerShell調用Java程序?

java -jar $cls --js $dcn --js_output_file $dco 

但是我需要有(使用Start-Process)運行在一個過程中的應用。

我想沒有sucess如下:

Start-Process -FilePath java -jar $cls --js $dcn --js_output_file $dco -wait -windowstyle Normal 

錯誤:

Start-Process : A parameter cannot be found that matches parameter name 'jar'. 

不知道如何解決它?

+0

知道實際的問題是什麼,我會說,會爲了能夠修復它,這是一件好事。 「沒有成功」幾乎是我見過的最詳細的問題報告:-) – paxdiablo 2015-02-24 08:56:59

+0

@paxdiablo感謝您的評論,我添加了錯誤:) – GibboK 2015-02-24 09:04:34

回答

6

您將需要使用以下格式的PowerShell:您可以使用

Start-Process java -ArgumentList '-jar', 'MyProgram.jar' ` 
-RedirectStandardOutput '.\console.out' -RedirectStandardError .\console.err' 

或者另一種選擇是啓動工作:

Start-Job -ScriptBlock { 
    & java -jar MyProgram.jar >console.out 2>console.err 
} 
+0

感謝您的回答,請你給我一個使用我的代碼的例子,我在設置參數列表中有問題 – GibboK 2015-02-24 09:26:38

+0

你需要在那裏添加你的jar名稱,如果有任何參數。 – 2015-02-24 09:31:23

+0

對不起,我得到一個ArgumentList錯誤,請你給我提供一個例子,多個參數傳遞.....在我的情況下,像$ dcn等變量...謝謝 – GibboK 2015-02-24 09:38:07

0

它看起來像-jar被挑選爲Start-Process的參數,而不是傳遞給java

雖然文檔指出-ArgumentList可選,我懷疑不會爲-option型的東西計數。

您可能需要使用:

Start-Process -FilePath java -ArgumentList ... 

例如,在PowerShell ISE中,以下行帶來了Java的幫助(雖然迅速消失):

Start-Process -FilePath java -argumentlist -help 

這個線:

Start-Process -FilePath java -help 

導致Powershell 本身抱怨-help

+0

感謝您的回答,可否請我提供一個使用我的代碼的例子,我有問題在設置參數列表 – GibboK 2015-02-24 09:24:41