命令提示符中的javafx参数给出空值

时间:2015-07-22 19:58:40

标签: java netbeans javafx-8

为每个人服务,

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

让我说明一下:

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

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

    ...
}

当我在NetBeans中使用值 abc 定义名为 myKey 的参数时,

netbeans_parameters

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

parameter is abc

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

java -jar MyApp.jar myKey=abc

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

parameter is null

这是为什么?这是我第一次使用参数,如果答案非常简单,那么道歉。

2 个答案:

答案 0 :(得分:1)

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

java -jar MyApp.jar --myKey=abc

答案 1 :(得分: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