Java Web Start具有在安装(和卸载)应用程序时调用的ExtensionInstallerService。它允许在getInstallPath()
API提供的本地目录中安装“扩展”,其内容如下:
java.lang.String getInstallPath()
返回建议安装程序安装扩展程序的目录。安装程序不需要安装在此目录中,这只是建议的路径。
我现在想知道如何在正在运行的Web Start应用程序中获取所提供的安装路径(application-desc
JNLP元素中定义的内容)。
我已经检查了运行应用程序的JVM的系统属性。那里有deployment.*
个属性,但不是扩展安装程序使用的安装路径。 ExtensionInstallerService
本身在正在运行的应用程序中不可用 - 因此无法在那里调用getInstallPath()
。
答案 0 :(得分:2)
使用ServiceManager.lookup("javax.jnlp.ExtensionInstallerService")
访问服务实例,然后根据需要使用其方法。
向JNLP客户端询问具有给定名称的服务。查找必须是幂等的,即为每个具有相同名称的调用返回相同的对象。
<强>参数:强>
name
- 要查找的服务名称。<强>返回:强>
实现服务的对象。永远不会退回
null
。相反会抛出异常。<强>抛出:强>
UnavailableServiceException
- 如果该服务不可用,或者名称为null
。
嗯,没有意识到。在任何情况下,在扩展安装程序代码中,为用户提供安装扩展的位置,然后使用我在扩展安装程序类(JNLP元素
ExtensionInstallerService
)中查找installer-desc
没有问题,但此服务在正在运行的应用程序中不可用(JNLP元素application-desc
)。
PersistenceService
存储该路径。