WindowsPowershell2.0でJavaプログラムを実行するのに問題があります。これに関する助けをいただければ幸いです。「HelloWorld!」という文字列が欲しいです。Powershellコンソールのメインウィンドウに印刷します。代わりに、開いてから突然閉じる別のプロセスウィンドウに出力されます。生成されたJavaプロセスのstdoutを現在のPowerShellコンソールにリダイレクトするようにPowerShellに指示する方法が正確にはわかりません。基本的に、DOSシェルでJavaを実行したときと同じような動作が必要です。
私のテストクラスは次のとおりです。
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
私のPowerShell2.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
エラーが発生します。このエラーが発生します:
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"
私が知る限り、私の引数は正しいです。これは、PCEX(http://pscx.codeplex.com)echoargsコマンドレットが私に教えてくれるものだからです。
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