JNLP如何向JavaFX2传递参数

3

我想把在JNLP文件中定义的参数传递给我的JavaFX 2应用程序。在这方面,我认为这应该是很简单的,但是我似乎无法让它工作。我已经阅读了很多与此主题相关的资料,但是没有成功。

以下是定义参数的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

你有什么想法,问题可能是什么?先谢谢了。

1个回答

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>

据我所知,当没有JavaFX运行时可用时,才会使用applet-desc元素。将main-class指向com.javafx.main.NoJavaFXFallback意味着您不提供预先JavaFX版本的小程序。
相反,真正的main方法及其参数由下面的元素指出:
<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应用程序支持两种类型的应用程序参数:命名和未命名(请参阅Application.Parameters的API)。
静态命名参数可以使用fx:application元素添加到应用程序包中,未命名参数可以使用java -jar yourjar.jar arg1 arg2添加。它们适用于所有执行模式,包括独立应用程序。
来源:http://docs.oracle.com/javafx/2/deployment/packaging.htm

运行得很好,感谢指出!我已经通过将参数添加到HTML文件中来完成它,但很高兴知道如何使用JNLP。 - Perneel

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