2015-02-24 34 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