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

标签 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 中定义名为 myKey 且值为 abc 的参数时,

netbeans_parameters

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

parameter is abc

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

java -jar MyApp.jar myKey=abc

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

parameter is null

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

最佳答案

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

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

关于命令提示符中的 javafx 参数给出空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31572862/

相关文章:

java - 更新 jTable - 将 jTable 作为参数传递

netbeans - 带有 JDK 7 的 Ubuntu 中的 Javafx(FX 路径?)

java - 使用java旋转pdfbox中的文本

java - Java 8 Eclipse 未设置 Root 错误

java - Apache NetBeans 11.1 无法正常工作

css - JavaFX 网格 Pane : Shrink if content is disabled and invisible

java - 如何将 JPasswordField 中的文本剪切/复制为字符数组?

java - Android 手机使用 Java 将文本文件发送到托管网络空间

java - 如何在我的应用程序中使用Android默认墙纸裁剪选项来设置墙纸

java - iText 5.0.0 RTF 和 HTML 去哪儿了?