簡體   English   中英

如何從Windows Powershell調用Java進程?

[英]How do I invoke a Java process from Windows Powershell?

我在使用Windows Powershell 2.0運行Java程序時遇到問題。 任何有關這方面的幫助將不勝感激。 我想要字符串“Hello World!” 打印到Powershell主控制台窗口。 相反,它被打印到一個單獨的進程窗口然后突然關閉。 我不知道如何告訴powershell將生成的java進程的stdout重定向到當前的PowerShell控制台。 基本上,我想要的行為就像我在DOS shell下運行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 shell一樣,希望輸出顯示在同一個控制台中:

java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp 

它會導致錯誤。 我收到此錯誤:

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" 

據我所知,我的args是正確的,因為這是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

我終於弄明白了。 這是最小的拼寫錯誤:

cd c:\
set-item -path Env:CLASSPATH -value C:\Test 
"CLASSPATH = $Env:CLASSPATH" 
java.exe -classpath $Env:CLASSPATH HelloWorldApp

指定類名時,它不能包含前綴類名的絕對路徑。 哎呀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM