这是我遇到的一个奇怪的问题:
我创建一个程序来打印所有收到的参数,代码如下:
public class Test {
public static void main(String[] args) {
for (int i = 0; i < args.length; i ++) {
System.out.println(args[i]);
}
}
}
然后我构建了它的 jar 文件并运行以下命令:
java -jar test.jar test&1
但是,它没有按预期打印“test&1”。其结果是:
test
'1'is not recognized as an internal or external command,operable program or batch file.
所以我的问题是:args 的分隔是什么?如果我确实需要接收“test&1”,我该怎么办?
谢谢!
最佳答案
这与Java无关。 &
字符对于 Windows shell 来说是特殊的(我可以从错误消息中看出它是 Windows):它将两个命令分隔在一行上,所以你要做的是告诉 shell 运行 java -jar test.jar test
,然后运行 1
。如果您想将 test&1
传递给 Java,则必须将其放在引号中:
java -jar test.jar "test&1"
&
在 *nix shell 上也很特殊(但以不同的方式,它在子 shell 中运行命令)。在那里,您可以像上面一样使用引号,或者在 &
之前放置 \
。但在 Windows 上不行。
关于java - Java main 函数中 args 的分割规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26293625/