Je rencontre des problèmes lors de l'exécution d'un programme Java avec Windows Powershell 2.0. Toute aide à ce sujet serait grandement appréciée. Je veux la chaîne "Hello World!" pour imprimer dans la fenêtre principale de la console Powershell. Au lieu de cela, il est imprimé dans une fenêtre de processus séparée qui s'ouvre puis se ferme soudainement. Je ne sais pas exactement comment dire à powershell de rediriger la stdout du processus java engendré à la console powershell actuelle. Fondamentalement, je veux un comportement juste comme ce que je reçois lors de l'exécution de Java sous un shell DOS.Comment appeler un processus Java à partir de Windows Powershell?
Ma classe de test est:
class HelloWorldApp {
public static void main(String[] args) {
System.out.println("Hello World!"); //Display the string.
}
}
Code Mon PowerShell 2.0 est la suivante:
set-item -path Env:CLASSPATH -value C:\Test
"CLASSPATH = $Env:CLASSPATH"
[Diagnostics.Process]::Start('java.exe','-classpath $Env:CLASSPATH C:\
Test\HelloWorldApp')
Sinon, j'essayé de courir comme si, comme je le ferais avec un interpréteur de commandes DOS régulière, avec l'espoir que la sortie montre dans la même console:
java.exe -classpath $Env:CLASSPATH C:\Test\HelloWorldApp
utilise une erreur Je reçois 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"
Pour autant que je peux dire, mes args sont correctes, car voici ce que le PCEX (http://pscx.codeplex.com) echoargs cmdlet 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 qu'il ya un façon d'obtenir ce travail parce que ce code fonctionne:
## Test.ps1
cd C:\PSJustice
java.exe -classpath . HelloWorldApp
de plus, cela fonctionne:
cd C:\
java.exe -classpath C:\Test HelloWorldApp
Vous obtenez le NoClassDefFoundError car java.exe s'attend à être invoqué à partir du répertoire dans lequel se trouve la classe (ou la racine de la structure du package). Je ne connais pas la partie PowerShell. –