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

时间:2016-07-19 16:16:02

标签: java powershell batch-file ant jasperserver

我正在尝试使用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")

还有路径变量。进入系统 - >高级系统设置 - >环境变量我可以看到它们在那里,所以我认为它不仅仅是设置powershell会话。

当我尝试运行ANT时(虽然是批量生成)

cd C:\ Jaspersoft \ jasperreports-server-6.2.0 \ apache-tomcat \ bin
$ arguments ='/ c service.bat install' Start-Process 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

我试过了:

  • 以多种方式设置环境(setx.exe等)
  • 以多种方式运行bat,start-process,cmd,invoke-command等

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

在我必须使用已安装Java的映像之前,我想了解为什么会发生这种情况并且理想情况下才能使其正常工作。

1 个答案:

答案 0 :(得分:1)

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"