Windows Powershell 2.0でJavaプログラムを実行するときに問題があります。 これに関するお手伝いがあれば幸いです。私は文字列が欲しい "Hello World!"メインのPowershellコンソールウィンドウに印刷します。 代わりに、別のプロセスウィンドウに印刷されて、 が開き、突然閉じます。私は、powershellに、生成されたjavaプロセスの標準出力を現在のpowershellコンソールにリダイレクトするように指示する方法を正確には知らない。基本的には、私はDOSシェルの下でjavaを実行するときと同じように動作したい。Windows PowershellからJavaプロセスを呼び出すにはどうすればよいですか?
私のテストクラスがある:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
私のPowerShell 2.0のコードはこれです:私は、通常の DOSシェルと同じように
set-item -path Env:CLASSPATH -value C:\Test
"CLASSPATH = $Env:CLASSPATH"
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp')
はまた、私は、そうのようにそれを実行しようとしました
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
NoClassDefFoundErrorを取得しています。java.exeは、クラスがあるディレクトリ(またはパッケージ構造のルート)から呼び出されるためです。 PowerShellの部分についてはわかりません。 –