2013-03-29 57 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