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

任何想法可能是什么问题?提前致谢..

4

1 回答 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>

AFAIK applet-desc 元素仅在没有可用的 javafx-runtime 时使用。将主类指向com.javafx.main.NoJavaFXFallback意味着您不提供小程序的 pre-javafx 版本。

相反,真正的主要方法及其参数由下面的元素指出:

<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 for Application.Parameters)。

静态命名参数可以使用添加到应用程序包中,未命名参数可以使用添加。它们适用于所有执行模式,包括独立应用程序。

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

于 2013-04-02T12:00:28.753 回答