使用Powershell安装Jasperserver时出现问题。ANT看不到Java
我正在尝试使用Powershell将Jasperserver安装到Windows虚拟机上
我可以很好地安装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")
还有路径变量。进入系统->;高级系统设置->;环境变量我可以看到它们在那里,所以我假设它不仅仅是设置powershell会话
当我尝试运行ANT时(通过批生成)
cd C:\Jaspersoft\jasperreports-server-6.2.0\apache tomcat\bin
$arguments='/c服务。bat安装'
启动进程cmd-Wait-PassThru-ArgumentList$参数
它给了我这个错误:
> 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
我试过:
- 通过多种方式设置环境(setx.exe等)
- 以多种方式运行bat,启动进程、cmd、调用命令等
如果我重新启动服务器,它将安装良好。另外,如果我在命令提示符下直接运行批处理,也可以
在我必须使用已经安装了Java的映像之前,我想了解为什么会发生这种情况,并在理想情况下使其工作
# 1 楼答案
SetEnvironmentVariable(..., "Machine")
和setx
都在注册表中设置变量。此值用于由explorer启动的未来进程(例如重新启动后),但未为当前进程或其子进程设置此值。脚本需要为当前进程设置变量使用。NET语法:
或者,使用PS语法