2013-03-29 58 views
3

我試圖將在JNLP文件中定義的參數傳遞給我的JavaFX 2應用程序。我認爲這將是直截了當的,但我似乎無法得到它的工作。我已經閱讀了很多話題,但沒有成功。將參數從JNLP傳遞到JavaFX2

這是JNLP文件的一部分,其中所述參數定義:

... 
<applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="Module" > 
    <param name="requiredFXVersion" value="2.2+"/> 
    <param name="key1" value="value1"/> 
</applet-desc> 
... 

我嘗試用下面的代碼來讀取JavaFX的2個應用程序的參數:

@Override 
public void start(Stage stage) throws Exception { 
    System.out.println("key1 = " + getParameters().getNamed().get("key1")); 
    ... 
} 

然而,如果我清理和構建項目並通過JNLP文件啓動它,我檢查Java控制檯並獲得:

key1 = null 

任何想法可能是什麼問題?在此先感謝..

回答

4
<applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="Module" > 
    <param name="requiredFXVersion" value="2.2+"/> 
    <param name="key1" value="value1"/> 
</applet-desc> 

AFAIK applet-desc元素僅在沒有可用的javafx運行時時使用。指向com.javafx.main.NoJavaFXFallback的主類意味着你不提供applet的pre-javafx版本。

而不是真正的主方法,它的PARAMS由以下元素代替指出:

<jfx:javafx-desc width="960" height="720" main-class="brickbreaker.Main" name="BrickBreaker" > 
    <fx:param name="sampleParam" value="Built with 1.7.0_17"/> 
    <fx:param name="noValueParam"/> 
    <fx:argument>Arg1</fx:argument> 
    <fx:argument>Arg2 with spaces </fx:argument> 
</jfx:javafx-desc> 

JavaFX應用程序支持兩種類型的應用程序參數:命名 和無名(見應用的API。參數)。

可以使用 將靜態命名參數添加到應用程序包中,並且可以使用添加的未命名參數。 它們適用於所有執行模式,包括獨立的 應用程序。

來源:http://docs.oracle.com/javafx/2/deployment/packaging.htm

+0

工程就像一個魅力,感謝指出了這一點!我已經設法將這些參數添加到html文件中,但我很高興知道它如何與JNLP協同工作。 – Perneel