使用 Powershell 安装 Jasperserver 时出现问题。 ANT 看不到 Java

Problems installing Jasperserver with Powershell. ANT can't see Java

我正在尝试使用 Powershell 将 Jasperserver 安装到 Windows VM 上。

我可以安装 Java 就好了,但是一些后续的获得 运行 的 bat 文件抱怨他们找不到环境变量,例如 JAVA_HOME。但是我可以看到它们存在。

我添加环境变量:

[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")

还有路径变量。进入 System -> Advanced System Settings -> Environment variables 我可以看到它们在那里,所以我假设它不仅仅是设置 powershell 会话。

当我尝试 运行 ANT(虽然是批量构建)

cd C:\Jaspersoft\jasperreports-server-6.2.0\apache-tomcat\bin
$arguments = '/c service.bat 安装' 启动进程 cmd -Wait -PassThru -ArgumentList $arguments

它给我这个错误:

> 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

我试过:

如果我重新启动服务器,它将安装正常。另外,如果我 运行 直接在命令提示符下批处理也没问题。

在我必须使用已经安装了 Java 的图像之前,我想了解为什么会发生这种情况,最好让它正常工作。

SetEnvironmentVariable(..., "Machine")setx 都在注册表中设置变量。此值用于资源管理器启动的未来进程(例如重启后),但未为当前进程或其子进程设置。您的脚本需要为 当前进程 .

设置变量

使用 .NET 语法:

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

或者,使用 PS 语法

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