如何使用jnlp正确部署32位和64位的桌面JavaFx 2.0应用程序?

5
我有一个jnlp文件用于部署我的JavaFX 2.0应用程序,但是如何确保用户拥有正确的JavaFX运行时(32位或64位,取决于机器上存在的JVM),如果没有,则下载它并运行应用程序。
假设用户当前未安装JavaFX运行时,我在使用64位机器时遇到的问题主要有以下几点:
1)JavaFX Swing部署指南提到使用标记来下载适当的jfx运行时,但1.7以下的JRE不理解这个标记/命名空间。
2)如果64位机器上安装了32位JRE,则如何将我的应用程序安装到“Program Files(x86)”文件夹中,下载并使用32位JavaFX运行时。
3)如果64位机器上安装了64位JRE,则如何将我的应用程序安装到“Program Files”文件夹中,下载并使用64位JavaFX运行时。
以下是我的jnlp文件的当前外观:
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="file:///C%3A/Program%20Files/HP/Pulse/PulseLite"href="iMonLauncher.jnlp">
    <information>      
        <title>iMonLauncher</title>  
        <vendor>Administrator</vendor>   
        <homepage href="file:///C%3A/Program%20Files/HP/Pulse/PulseLite"/>     
        <description>iMonLauncher</description>  
        <offline-allowed/>    
    </information>   
    <security>      
        <all-permissions/>  
    </security> 
    <resources> 
        <j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/>
        <jar href="iMon.jar" size="428419"/>         
         <jar href="lib/ibase-core.jar" size="197029"/>
         <jar href="lib/ibase-fx.jar" size="210175"/>
         <jar href="lib/imonDB.jar" main="true" size="156616"/>
         <jar href="lib/imon-service.jar" main="true" size="73190"/>
         </resources>
     <application-desc name="iMon" main-class="imon.Main" >
     </application-desc>
     <update check="always"/>

代码库会自动更改,以指向正确的程序文件夹,取决于架构。
提前致谢!
1个回答

1

你的jnlp文件中缺少xmlns:jfx命名空间。它应该以以下方式开始

<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="iMonLauncher.jnlp">

一旦用户安装了常规的Java并点击了jnlp文件,他将会收到自动下载FX的消息。它会找出使用的Java版本,下载并安装适当的JavaFX版本。

jnlp response


我在我的jnlp中使用了xmlns:jfx命名空间,但我认为这个命名空间只能在jre 1.7+中被识别,而不能在之前的版本中被识别。因此,如果用户有jre 1.6+,这个命名空间就会被完全忽略,而不会在系统上安装JavaFX,从而导致应用程序无法启动。 - Saurabh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接