如何确定WebStart是否运行JavaFX应用程序?

时间:2013-07-08 21:05:29

标签: java javafx-2 java-web-start

有没有办法找出Javafx2应用程序的启动方式?

即。是通过网络启动链接启动还是通过桌面快捷方式启动?

我需要知道应用程序是从Web启动还是桌面图标启动的原因是,通过JNLP传递了一些参数,当从桌面图标启动时应用程序不会使用这些参数,并且没有办法(我知道)应用程序会知道这些参数是否未通过。

任何指针都会有所帮助。

2 个答案:

答案 0 :(得分:0)

AFAIK,没有好方法,你需要使用运行模式的副作用。

您可以选择使用下一个:

  1. Applet始终具有WebContext
  2. Applet / JNLP始终具有SecurityManager
  3. 桌面运行通常没有SecurityManager(不完全可靠)而且从不拥有​​WebContext
  4. 见下一段代码:

        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();
    

    另一个选项是Can I find out if the java program was launched using java or javaw

答案 1 :(得分:0)

  

(我)..一次(第一次)只能从桌面图标启动

     

是的,这是正确的。

行。这是可行的。

在代码中,使用JNLP API的PersistenceService检查密钥/值(例如has-run-once / true)。如果存在,请使用JNLP中定义的属性并设置值。

这是一个小demo. of the PersistenceService