Java 如何从install4j中的脚本访问sys.preferredJre?

Java 如何从install4j中的脚本访问sys.preferredJre?,java,macos,install4j,Java,Macos,Install4j,我的应用程序通过SSL上的LDAP服务器使用身份验证。这需要在捆绑的JRE密钥库中安装证书。我使用一个脚本通过Java代码来完成这项工作,在此过程中需要找到已安装JRE的位置。此脚本在安装结束时执行 在Windows上,它相对简单:我只使用context.getInstallationDirectory(),然后添加jre\lib\security\cacerts 但是,在Mac OS上,JRE安装在不同的位置,我需要使用实际的sys.preferredJre或java.home属性。问题是我无

我的应用程序通过SSL上的LDAP服务器使用身份验证。这需要在捆绑的JRE密钥库中安装证书。我使用一个脚本通过Java代码来完成这项工作,在此过程中需要找到已安装JRE的位置。此脚本在安装结束时执行

在Windows上,它相对简单:我只使用
context.getInstallationDirectory()
,然后添加
jre\lib\security\cacerts

但是,在Mac OS上,JRE安装在不同的位置,我需要使用实际的
sys.preferredJre
java.home
属性。问题是我无法从脚本访问它们。上下文对象似乎没有相应的方法
System.getProperty(“java.home”)
返回一个临时位置,JRE可能首先在该位置解包,而不是最终路径。
context.getCompilerVariable(“sys.preferredJre”)
返回null

作为补充说明,脚本内部似乎没有任何日志记录。我得到的只是一条简短的消息,说明脚本的成功或失败。我必须写入自定义文件才能获得任何信息

你能建议一个处理这个问题的方法吗?理想情况下,我希望以独立于操作系统的方式完成这项工作,并只获取Jre目录

提前谢谢

Sasha

运行“安装文件”操作后,
sys.preferredJre
installer变量被设置到安装捆绑JRE的目录。您可以通过调用

context.getVariable("sys.preferredJre")
在您的问题中,您使用了
getCompilerVariable
,这是不正确的,因为它返回编译器变量的值。

在“安装文件”操作运行后,
sys.preferredJre
安装程序变量被设置为捆绑JRE的安装目录。您可以通过调用

context.getVariable("sys.preferredJre")

在您的问题中,您使用了
getCompilerVariable
,这是不正确的,因为它返回编译器变量的值。

谢谢您,Ingo。我刚测试过,效果很好。谢谢你,英戈。我刚测试过,效果很好。