如何确定JavaFX应用程序是否由WebStart运行?
有没有办法了解Javafx2应用程序是如何启动的 即,是通过web start链接启动还是通过桌面快捷方式启动 我需要知道应用程序是从web start还是从桌面图标启动的原因是,有一些参数是通过JNLP传递的,当从桌面图标启动时,应用程序不会使用这些参数,如果这些参数没有传递,应用程序将无法(据我所知)知道如何确定JavaFX应用程序是否由WebStart运行?,java,javafx-2,java-web-start,Java,Javafx 2,Java Web Start,有没有办法了解Javafx2应用程序是如何启动的 即,是通过web start链接启动还是通过桌面快捷方式启动 我需要知道应用程序是从web start还是从桌面图标启动的原因是,有一些参数是通过JNLP传递的,当从桌面图标启动时,应用程序不会使用这些参数,如果这些参数没有传递,应用程序将无法(据我所知)知道 任何指针都会有帮助。好吧,并没有好的方法,你们需要使用运行模式的副作用 您可以选择使用下一个选项: 小程序始终具有WebContext Applet/JNLP始终具有SecurityMan
任何指针都会有帮助。好吧,并没有好的方法,你们需要使用运行模式的副作用 您可以选择使用下一个选项:
Pane root = new VBox(5);
boolean gotSecurityManager = System.getSecurityManager() != null;
boolean gotWebContext = getHostServices().getWebContext() != null;
root.getChildren().addAll(
new Label("desktop = " + (!gotSecurityManager && !gotWebContext)),
new Label("jnlp = " + (gotSecurityManager && !gotWebContext)),
new Label("applet = " + gotWebContext)
);
Scene scene = new Scene(root, 500, 250);
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
另一个选择是
(我)…它将只一次(第一次)从桌面图标启动吗
是的,没错
嗯。这是可行的
在代码中,使用JNLP API的PersistenceService
检查键/值(例如已运行一次
/true
)。如果不存在,请使用JNLP中定义的属性并设置该值
这是一个小问题。感谢您编辑问题Sergey。现在看来解释得更清楚了。我将尝试你在下面提出的想法。我尝试了下面列出的前两种方法:即从
PersistenceService
读取属性(如:hasrunce),然后读取WebContext`和SecurityManager
,但由于某些问题,问题没有得到解决。专家们,如果你能想出任何其他方法,请告诉我。我尝试了上述解决方案。但我试着从桌面上创建的快捷方式启动应用程序,它仍然显示出好像是通过jnlp启动的。也许我把问题说错了。请告知。或者桌面上的快捷方式可能只是模仿应用程序来自web的行为,因为它在内部使用jnlp文件启动应用程序。哦,桌面快捷方式,抱歉,我误解了一个问题,是否可以通过单击从webstart安装javafx应用程序时创建的桌面快捷方式来确定应用程序是否已启动?