我们有一个当前在 Windows 上运行的 Java 应用程序,它需要配置信息才能在 Windows XP 和 Win 7 上正常工作。该配置信息是使用 Windows 系统变量定义的(适用于应用程序的所有用户),而不是用户变量(仅适用于当前运行应用程序的用户。)
我的工作是让它在 Mac (OS X 10.6.8) 上运行当我使用 JarBundler 为 Mac 构建应用程序时,我将这些变量的属性设置为正确的值,我看到它们按预期显示,在 app 文件夹的 Info.plist 文件中。从我对可用文档的阅读来看,Info.plist 属性似乎应该适用于应用程序的所有用户,类似于 Windows 系统环境变量。
但是,当我使用 PackageMaker 创建包、安装它然后运行应用程序时,会返回 null 作为这些变量的值。我正在使用 Java 的最新更新——更新 9。(null 的返回被视为控制台窗口中数据字段中的 null 错误......并且应用程序挂起。)
我已经验证正在安装 Info.plist 文件;它位于 app 文件夹中的预期位置,并且包含预期的数据。
如果我没有使用 info.plist,而是创建了文件 ~/.MacOSX/environment.plist,其中包含相同的变量(使用属性列表编辑器)并重新启动计算机,应用程序按预期运行,表明正在输入有效数据根据环境变量的请求返回。
因为目标是通过 PackageMaker 制作最终用户可安装的应用程序,而不需要用户为 environment.plist 创建隐藏文件夹,手动将文件移到那里,注销并重新登录,或重新启动计算机,然后才能安装运行应用程序,我更愿意使用 Info.plist 找到解决方案。
让 Java 应用程序正确读取 Info.plist 中的属性是否有一些技巧?是否需要在 JarBundler、PackageMaker 中或通过属性列表编辑器来完成这项工作?
或者这可能需要对 Java 代码进行一些修改?(我不知道具体用什么命令来读取环境变量数据。目前我没有访问源代码,虽然我可以访问它,如果需要回答这个问题。)
编辑:这是我的片段Info.plist
:
<key>Properties</key>
<dict>
...
<key>COMPENDIUM_DEVELOPER</key>
<string>true</string>
<key>CompendiumUserPath</key>
<string>/Applications/Compendium_CN</string>
<key>CompendiumSysPath</key>
<string>/Applications/Compendium_CN</string>
...
</dict>