3

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
4

1 に答える 1

5

私はついにそれを理解しました。それは最小のタイプミスでした:

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

クラス名を指定する場合、クラス名の前に絶対パスを含めることはできません。おっと。

于 2009-07-01T22:35:40.033 に答える