我正在尝试将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
任何想法可能是什么问题?提前谢谢..
答案 0 :(得分: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
意味着您不提供applet的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应用程序支持两种类型的应用程序参数:named 和未命名的(请参阅Application.Parameters的API)。
可以使用静态命名参数添加到应用程序包中 可以使用添加和未命名的参数。 它们适用于所有执行模式,包括独立的 应用