Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命令提示符中的javafx参数提供空值_Java_Netbeans_Javafx 8 - Fatal编程技术网

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

命令提示符中的javafx参数提供空值,java,netbeans,javafx-8,Java,Netbeans,Javafx 8,各位晚上好, 这可能是个愚蠢的问题,但我似乎很难找到答案。我创建了一个简单的JavaFX8程序,它应该能够读取命令行参数 让我举例说明: public void start(Stage stage) throws Exception { Map parameters = getParameters().getNamed(); System.out.println("parameter is " + parameters.get("myKey")); ..

各位晚上好,

这可能是个愚蠢的问题,但我似乎很难找到答案。我创建了一个简单的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 -jar MyApp.jar --myKey=abc

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

java-jarjavahelp.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