Wie rufe ich eine Java-Prozess von Windows Powershell?

Ich habe Probleme beim ausführen eines Java-Programms mit Windows Powershell 2.0.
Jede Hilfe auf diesem würde sehr geschätzt werden. Ich möchte den string
"Hallo Welt!" zu drucken, die den Powershell-Konsole-Fenster.
Statt, die immer gedruckt, um einen eigenen Prozess Fenster, das sich öffnet
dann plötzlich schließt. Ich weiß nicht genau, wie man die powershell-Umleitung des stdout an die erzeugte java-Prozess auf die aktuelle powershell Konsole. Ich möchte mich Verhalten wie das, was ich bekomme, wenn die Ausführung von java unter einer DOS-shell.

Meine test-Klasse ist:

class HelloWorldApp { 
    public static void main(String[] args) { 
        System.out.println("Hello World!"); //Display the string. 
    } 
} 

Mein PowerShell 2.0-code ist dieser:

set-item -path Env:CLASSPATH -value C:\Test 
"CLASSPATH = $Env:CLASSPATH" 
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp') 

Alternativ, ich versuchte es etwa so aus, als würde ich mit einem regelmäßigen
DOS-shell, mit der Hoffnung, dass zeigt die Ausgabe in der Konsole :

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

Verursacht es einen Fehler. Ich bekomme diese Fehlermeldung:

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" 

Soweit ich das beurteilen kann, meine Argumente sind richtig, weil hier ist, was die
PCEX ( http://pscx.codeplex.com ) echoargs cmdlet sagt mir:

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> 

Im überzeugt es gibt einen Weg, um diese zu arbeiten, weil dieser code funktioniert:

## Test.ps1
cd C:\PSJustice
java.exe -classpath . HelloWorldApp

Auch, das funktioniert:

cd C:\
java.exe -classpath C:\Test HelloWorldApp
Sie sind immer die NoClassDefFoundError weil java.exe erwartet werden aufgerufen aus dem Verzeichnis, das die Klasse (oder die Wurzel der package-Struktur). Weiß nicht, über die PowerShell-Teil obwohl.

InformationsquelleAutor djangofan | 2009-07-01

Schreibe einen Kommentar