Java 获取当前JNLP信息

Java 获取当前JNLP信息,java,jnlp,Java,Jnlp,我正在从一个jnlp文件运行一个应用程序,该文件包含有用的信息,如供应商、描述和其他字段 为了构建“关于”对话框,在运行时获取这些数据的最合理方法是什么 是否有一种方法可以检测应用程序是否在没有JavaWebStart的情况下启动 谢谢你的帮助 Pierre您可以通过检查jnlp服务的可用性来检测应用程序是否是使用webstart启动的。比如: public boolean launchedByJNLP(){ try { ServiceManager.lookup("ja

我正在从一个jnlp文件运行一个应用程序,该文件包含有用的信息,如供应商、描述和其他字段

为了构建“关于”对话框,在运行时获取这些数据的最合理方法是什么

是否有一种方法可以检测应用程序是否在没有JavaWebStart的情况下启动

谢谢你的帮助


Pierre

您可以通过检查jnlp服务的可用性来检测应用程序是否是使用webstart启动的。比如:

public boolean launchedByJNLP(){
    try {
        ServiceManager.lookup("javax.jnlp.BasicService");
    } catch (UnavailableServiceException e) {
        return false;
    }

    return true;
}

至于获取About对话框的jnlp信息,我认为最好的解决方案是将About对话框中需要的任何信息包含在与应用程序打包的单独属性文件中。

实现所需目标有多种策略。我将不再重温已经提到的内容,而是概述更多内容


(一) 信息可以放在存档的清单中。可以使用类的方法检索它

Package类还能够识别所有加载的包

Package[] package = Package.getPackages();
反复搜索您的包,您可以获得当前加载的所有包的列表

将信息放入清单的最佳方法是使用Ant或类似的构建工具。这样就可以将版本设置为日期-轻松完成


2) 将属性添加到JNLP的resources部分

<resources>
    .. 
    <property name="jnlp.href" value="${href}" />
    ..
</resources>
加载JNLP文件并使用J2SE中过多的XML API之一对其进行解析。(如果它没有加载到J2SE的XML API中,则强烈表示它无效或格式不正确,应使用以下工具检查。)


加载并解析后,即可获得并呈现基本信息。

有什么原因不能将其与JNLP文件一起烘焙到应用程序中并从中获取?
<resources>
    .. 
    <property name="jnlp.href" value="${href}" />
    ..
</resources>
URL urlToJnlp = new URL(
    basicService.getCodeBase(),
    System.getProperty("jnlp.href") );