Comment puis-je invoquer un processus Java à partir de Windows Powershell?

J'ai de la difficulté de l'exécution d'un programme Java avec Windows Powershell 2.0.
Toute aide serait grandement appréciée. Je veux la chaîne
"Hello World!" à imprimer pour les principaux Powershell fenêtre de la console.
Au lieu de cela, son être imprimé à un processus distinct de la fenêtre qui s'ouvre
puis, soudain, se ferme. Je ne sais pas exactement comment dire le powershell pour rediriger la sortie standard (stdout) de la donné naissance à java processus à l'actuelle console powershell. Fondamentalement, je veux comportement, tout comme ce que je reçois lors de l'exécution de java sous un shell DOS.

Ma classe de test est:

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

Mon PowerShell 2.0 code est: est-ce

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

Sinon, j'ai essayé de l'exécuter comme si, comme je le ferais avec une régulière
Shell DOS, avec l'espoir que la sortie s'affiche dans la même console :

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

Il provoque une erreur. J'obtiens cette erreur:

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" 

Aussi loin que je peux dire, mon argument est correct parce que c'est ici que l'
PCEX ( http://pscx.codeplex.com ) echoargs applet de commande me dit:

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 convaincu, il est un moyen d'obtenir ce travail parce que ce code fonctionne:

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

Aussi, cela fonctionne:

cd C:\
java.exe -classpath C:\Test HelloWorldApp
Vous obtenez la NoClassDefFoundError parce que java.exe s'attend à être invoqué à partir du répertoire de la classe (ou la racine de la structure des paquets). Ne connaissent pas le PowerShell bien.

OriginalL'auteur djangofan | 2009-07-01