命令提示符中的 javafx 参数给出空值
javafx parameters in command prompt gives null values
大家晚上好,
这可能是个愚蠢的问题,但我似乎很难找到答案。我创建了一个简单的 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
it returns 值为 null,这意味着参数不会转发到 JavaFX 应用程序:
parameter is null
这是为什么?这是我第一次使用参数,如果答案真的很简单,我深表歉意。
每个参数前需要 --
。所以你需要的命令是:
java -jar MyApp.jar --myKey=abc
关键是从命令行调用时使用以下语法:
java -jar JavaHelp.jar --p1=hello --p2=world
getNamed only returns something if parameter is annotated with -- (我认为这等于 '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
大家晚上好,
这可能是个愚蠢的问题,但我似乎很难找到答案。我创建了一个简单的 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
it returns 值为 null,这意味着参数不会转发到 JavaFX 应用程序:
parameter is null
这是为什么?这是我第一次使用参数,如果答案真的很简单,我深表歉意。
每个参数前需要 --
。所以你需要的命令是:
java -jar MyApp.jar --myKey=abc
关键是从命令行调用时使用以下语法:
java -jar JavaHelp.jar --p1=hello --p2=world
getNamed only returns something if parameter is annotated with -- (我认为这等于 '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