2016-07-19 14 views
1

Ich versuche Jasperserver auf einer Windows VM mit Powershell zu installieren.Probleme bei der Installation von Jasperserver mit Powershell. ANT kann Java nicht sehen

installiere ich Java ganz gut, aber einige spätere bat-Dateien, die sie bekommen laufen beschweren können nicht Umgebungsvariablen wie JAVA_HOME finden. Ich kann jedoch sehen, dass sie existieren.

ich hinzufügen, um die Umgebungsvariablen:

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk1.8.0_91", "Machine") 
[Environment]::SetEnvironmentVariable("JRE_HOME", "C:\Program Files\Java\jre1.8.0_91", "Machine") 
[Environment]::SetEnvironmentVariable("CLASSPATH", "C:\Program Files\Java\jdk1.8.0_91\jre1.8.0_91\lib\rt.jar", "Machine") 

Und auch die Pfadvariablen. Unter System -> Erweiterte Systemeinstellungen -> Umgebungsvariablen kann ich sehen, dass sie dort sind, also nehme ich an, dass es nicht nur die Powershell-Sitzung setzt.

Wenn ich versuche, ANT (obwohl ein Build in Charge)

cd C auszuführen: \ Jaspersoft \ Jasper-server-6.2.0 \ Apache-tomcat \ bin
$ Argumente = ‚/ c Service. Start-Prozess bat installieren‘ cmd -Wait -PassThru -ArgumentList $ Argumente

es gibt mir diese Fehlermeldung:

> WARNING: JAVA_HOME environment variable not found [minimal] Running 
> install-minimal-pro Ant task 
> ---------------------------------------------------------------------- '"java.exe"' is not recognized as an internal or external command, 
> operable program or batch file. Checking Ant return code: OK 

ich habe versucht:

  • die Umgebungen mehr Möglichkeiten einstellen (Setx.exe usw.)
  • die Schläger in vielerlei Hinsicht Laufen, Start-Prozess, cmd, in einem invoke-Befehl, etc

Wenn ich den Server neu starten es wird gut installieren. Wenn ich den Stapel direkt in einer Eingabeaufforderung ausführe, ist es auch in Ordnung.

Bevor ich ein Bild zu verwenden, haben mit Java bereits installiert ist, möchte ich verstehen, warum dies geschieht und es ideal funktioniert.

Antwort

1

Sowohl SetEnvironmentVariable(..., "Machine") als auch setx setzen Sie die Variable in der Registrierung. Dieser Wert wird für zukünftige Prozesse verwendet, die vom Explorer gestartet werden (z. B. nach einem Neustart), aber er ist NICHT für den aktuellen Prozess oder seine untergeordneten Elemente festgelegt. Ihr Skript muss die Variablen für den aktuellen Prozess festlegen.

mit .NET Syntax:

[Environment]::SetEnvironmentVariable("JAVA_HOME", "C:\Program Files\Java\jdk1.8.0_91", "Process") 

Oder PS Syntax

$env:JAVA_HOME = "C:\Program Files\Java\jdk1.8.0_91"