我希望传递java-vm-args
以启用应用程序中的触控控件,该应用程序通过带有JNLP
文件的webstart进行部署。在IDE(Intellij)的本地,我提供了以下java-vm-args
,它正在运行:
-Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard=javafx
进一步使用以下属性,例如对于TextField
,如果在IDE中使用上面提到的args
启动它可以正常工作:
myTextField.getProperties().put("vkType", "text");
如下所示修改JNLP
的网页开始无效:
[...]
<resources>
<j2se version="1.8+" java-vm-args="-XX:+UseConcMarkSweepGC -Xmx1024m -Dcom.sun.javafx.isEmbedded=true -Dcom.sun.javafx.virtualKeyboard=javafx"/>
[...]
应用程序记录传递的java-vm-args
,因此我可以检查,是否传递参数。除了上述args
之外,所有期望的args
都会通过。
如何通过网站启动/ args
提供上述JNLP
?
答案 0 :(得分:1)
可能JNLP没有明确支持你对java-vm-args的一些参数如here所述(向下滚动到:&#34;此版本支持以下java-vm-args& #34;。)
对于触摸控制,请添加:-Dcom.sun.javafx.touch=true
(在此处找到:https://community.oracle.com/thread/3548421)
其中一些可用于编程:
例如,检查它是否嵌入:
public void start(Stage stage) {
boolean isEmbedded = (stage.getWidth() > 0);
...
}
其他人可以通过加载JNLP的html页面进行设置。看这里找到所有可用的东西:
http://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_toolkit.html#BABJHEJA
Netbeans上的JavaFX项目生成的JNLP如下所示:
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0" xmlns:jfx="http://javafx.com" href="JavaFXPreloaderApp.jnlp">
<information>
<title>JavaFXPreloaderApp</title>
<vendor>None</vendor>
<description>null</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.6+" java-vm-args="-Xms100m -Xmx1024m " href="http://java.sun.com/products/autodl/j2se"/>
<jar href="lib/JavaFXPreloader.jar" size="3760" download="progress" />
<jar href="JavaFXPreloaderApp.jar" size="5636" download="eager" />
</resources>
<applet-desc width="800" height="600" main-class="com.javafx.main.NoJavaFXFallback" name="JavaFXPreloaderApp" >
<param name="requiredFXVersion" value="8.0+"/>
</applet-desc>
<jfx:javafx-desc width="800" height="600" main-class="application.JavaFXPreloaderApp" name="JavaFXPreloaderApp" preloader-class="preloader.JavaFXPreloader"/>
<update check="always"/>
</jnlp>