Java Web Start ExtensionInstallerService - 如何获取应用程序中的安装路径?
Java Web Start ExtensionInstallerService - How to get hold of the install path in the application?
Java Web Start 具有一个 ExtensionInstallerService,在安装(和卸载)应用程序时调用。它允许在本地目录中安装 "extensions",该目录由 getInstallPath()
API 提供,内容如下:
java.lang.String getInstallPath()
Returns the directory where the installer is recommended to install the extension in. It is not required that the installer install in this directory, this is merely a suggested path.
我现在想知道如何获取 运行 Web Start 应用程序中提供的安装路径(在 application-desc
JNLP 元素中定义)。
我已经检查了应用程序 运行 中的 JVM 的系统属性。那里有很多 deployment.*
属性,但没有扩展安装程序使用的安装路径。 ExtensionInstallerService
本身在 运行 应用程序中不可用 - 因此无法在那里调用 getInstallPath()
。
使用 ServiceManager.lookup("javax.jnlp.ExtensionInstallerService")
获取服务实例的访问权限,然后根据需要使用其方法。
Asks the JNLP Client for a service with a given name. The lookup must be idempotent, that is return the same object for each invocation with the same name.
Parameters:
name
- Name of service to lookup.
Returns:
An object implementing the service. null
will never be returned. Instead an exception will be thrown.
Throws:
UnavailableServiceException
- if the service is not available, or if name is null
.
编辑
I have no problem to lookup ExtensionInstallerService
in the extension installer class (JNLP element installer-desc
), but this service is unavailable in the running application (JNLP element application-desc
).
呵呵,没想到。在任何情况下,在扩展安装程序代码中,为用户提供安装扩展的位置,然后使用 PersistenceService
.
存储该路径
Java Web Start 具有一个 ExtensionInstallerService,在安装(和卸载)应用程序时调用。它允许在本地目录中安装 "extensions",该目录由 getInstallPath()
API 提供,内容如下:
java.lang.String getInstallPath()
Returns the directory where the installer is recommended to install the extension in. It is not required that the installer install in this directory, this is merely a suggested path.
我现在想知道如何获取 运行 Web Start 应用程序中提供的安装路径(在 application-desc
JNLP 元素中定义)。
我已经检查了应用程序 运行 中的 JVM 的系统属性。那里有很多 deployment.*
属性,但没有扩展安装程序使用的安装路径。 ExtensionInstallerService
本身在 运行 应用程序中不可用 - 因此无法在那里调用 getInstallPath()
。
使用 ServiceManager.lookup("javax.jnlp.ExtensionInstallerService")
获取服务实例的访问权限,然后根据需要使用其方法。
Asks the JNLP Client for a service with a given name. The lookup must be idempotent, that is return the same object for each invocation with the same name.
Parameters:
name
- Name of service to lookup.Returns:
An object implementing the service.
null
will never be returned. Instead an exception will be thrown.Throws:
UnavailableServiceException
- if the service is not available, or if name isnull
.
编辑
I have no problem to lookup
ExtensionInstallerService
in the extension installer class (JNLP elementinstaller-desc
), but this service is unavailable in the running application (JNLP elementapplication-desc
).
呵呵,没想到。在任何情况下,在扩展安装程序代码中,为用户提供安装扩展的位置,然后使用 PersistenceService
.