gpt4 book ai didi

来自控制台的带引号/空格的 Javafx 命名参数

转载 作者:行者123 更新时间:2023-12-02 11:07:40 24 4
gpt4 key购买 nike

我想从控制台启动 javafx 程序并使用 getParameters() 访问(命名)参数

我将参数保存在名为 args 的变量中。

当我调用 java -jar test.jar --arg1="hello world"arg2=123 时,它起作用了。
但是,当我输入 java -jar test.jar $args 时,
参数分为 --arg1="helloworld"

enter image description here

我如何才能将命名参数保留为“arg1”->“hello world”?

enter image description here

最佳答案

我用这个java例子进行测试:

public class Echo extends Application {

/*
* (non-Javadoc)
* @see javafx.application.Application#start(javafx.stage.Stage)
*/
@Override
public void start(Stage primaryStage) throws Exception {

Parameters params = getParameters();
System.out.println("\nRaw");
params.getRaw().forEach(e -> {
System.out.println(e);
});

System.out.println("\nNamed");
params.getNamed().keySet().forEach(key -> {
System.out.println("key : " + key + " / value : " + params.getNamed().get(key));
});

System.out.println("\nUnnamed");
params.getUnnamed().forEach(unnamed -> {
System.out.println(unnamed);
});

Platform.exit();
}

public static void main(String[] args) {
launch(args);
}

}

它实际上在 Windows 上运行良好。

D:\Profiles\PagboStack\Desktop           
λ set args=--arg1="Hello World" arg2=123

D:\Profiles\PagboStack\Desktop
λ echo %args%
--arg1="Hello World" arg2=123

D:\Profiles\PagboStack\Desktop
λ java -jar Echo.jar %args%

Raw
--arg1=Hello World
arg2=123

Named
key : arg1 / value : Hello World

Unnamed
arg2=123

但对于 Unix 来说就更复杂了。我成功了,感谢this answer .
请注意,该链接提供了您可以根据需要考虑的其他解决方案。

[13/06/2018 14:59.32]  /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ export args='--arg1="Hello World"|arg2=123'

───────────────────────────────────────────────────────────
[13/06/2018 15:05.04] /drives/d/profiles/pabgo/Desktop
[pagbo.stack] ➤ IFS='|'

───────────────────────────────────────────────────────────
[13/06/2018 15:05.07] /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ "$JAVA_HOME"/bin/java.exe -jar Echo.jar $args

Raw
--arg1="Hello World"
arg2=123

Named
key : arg1 / value : "Hello World"

Unnamed
arg2=123

这里的要点是更改内部字段分隔符(IFS),默认情况下为空格。

关于来自控制台的带引号/空格的 Javafx 命名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50834846/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com