我在使用Windows Powershell 2.0運行Java程序時遇到了問題。 任何幫助,將不勝感激。我想要字符串 「Hello World!」打印到主Powershell控制檯窗口。 取而代之的是,它打印到一個單獨的過程窗口,然後突然關閉,打開 。我不知道如何告訴powershell將生成的java進程的stdout重定向到當前的powershell控制檯。基本上,我想要的行爲就像我在DOS shell下運行java時所得到的一樣。如何從Windows Powershell調用Java進程?
我的測試類是:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
我的PowerShell 2.0的代碼是這樣的:
set-item -path Env:CLASSPATH -value C:\Test
"CLASSPATH = $Env:CLASSPATH"
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp')
另外,我試圖像這樣運行它,因爲我有定期 DOS的外殼,希望輸出顯示在同一個控制檯上:
java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
它ca使用錯誤。我得到這個錯誤:
PS >C:\Test\Test.ps1
CLASSPATH = C:\Test
java.exe : java.lang.NoClassDefFoundError: C:\Test\HelloWorldApp
At C:\Test\Site.ps1:3 char:5
+ java <<<< -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
+ CategoryInfo : NotSpecified: (java.lang.NoCla...e\HelloWorldApp:
String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError
Exception in thread "main"
至於我可以告訴大家,我的ARG遊戲正確的,因爲這裏是什麼 PCEX(http://pscx.codeplex.com)echoargs cmdlet的告訴我:
PS >echoargs java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
Arg 0 is <java.exe>
Arg 1 is <-classpath>
Arg 2 is <C:\Test>
Arg 3 is <C:\Test\HelloWorldApp>
林相信有一個辦法得到這個工作,因爲此代碼的工作:
## Test.ps1
cd C:\PSJustice
java.exe -classpath . HelloWorldApp
而且,這個工程:
cd C:\
java.exe -classpath C:\Test HelloWorldApp
您正在獲取NoClassDefFoundError,因爲java.exe期望從該類所在的目錄(或包結構的根目錄)中調用。不過不知道PowerShell部分。 – 2009-07-01 22:10:31