【问题标题】:javafx parameters in command prompt gives null values命令提示符中的 javafx 参数给出空值
【发布时间】:2015-07-22 19:58:39
【问题描述】:

大家晚安,

这可能是一个愚蠢的问题,但我似乎很难找到答案。我创建了一个简单的 JavaFX8 程序,它应该能够读取命令行参数。

让我举例说明:

public void start(Stage stage) throws Exception {       
    Map parameters = getParameters().getNamed();

    System.out.println("parameter is " + parameters.get("myKey"));

    ...
}

当我在 NetBeans 中定义一个名为 myKey 且值为 abc 的参数时,

当我从 IDE 运行我的应用程序时,它会产生以下输出:

parameter is abc

但是,如果我从命令提示符运行它,如下所示:

java -jar MyApp.jar myKey=abc

它返回值null,这意味着参数不会转发到JavaFX应用程序:

parameter is null

这是为什么?这是我第一次使用参数,如果答案真的很简单,我们深表歉意。

【问题讨论】:

    标签: java netbeans javafx-8


    【解决方案1】:

    关键是从命令行调用时使用以下语法:

    java -jar JavaHelp.jar --p1=hello --p2=world

    getNamed 仅在参数用 -- 注释时返回一些东西(我认为这等于 'NAMED')

    用这个程序试试,你可以看到:

    public class Main extends Application {
    
        @Override
        public void init() throws Exception {
            super.init();
            System.out.println(getParameters().getRaw().toString());
            getParameters().getNamed().forEach((name, string) -> {
                System.out.println("Parameter[" + name + "]=" + string);
            });
        }
    
        @Override
        public void start(Stage primaryStage) throws Exception {
            primaryStage.setTitle("Hello World");
            primaryStage.setScene(new Scene(new Pane() {{
                getChildren().add(new Button("B"));
            }}));
            primaryStage.show();
    
        }
    
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    这将打印:

    Parameter[p1]=hello
    Parameter[p2]=world
    

    【讨论】:

      【解决方案2】:

      每个参数之前都需要--。所以你需要的命令是:

      java -jar MyApp.jar --myKey=abc
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-07-09
        • 2014-04-14
        • 2012-10-05
        • 1970-01-01
        • 2012-11-12
        • 2019-01-03
        • 2018-09-15
        相关资源
        最近更新 更多