我遇到了一个奇怪的问题:
我创建了一个程序来打印所有收到的args,这是代码:
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&amp; 1”。结果是:
test
'1'is not recognized as an internal or external command,operable program or batch file.
所以我的问题是:args的分离是什么?如果我真的需要接收“test&amp; 1”,我该怎么办?
谢谢!
答案 0 :(得分:3)
这与Java无关。 &
字符对于Windows shell 是特殊的(我可以从错误消息中告诉它是Windows):它在一行上分隔两个命令,所以你要做的就是告诉shell运行java -jar test.jar test
然后运行1
。如果要将test&1
传递给Java,则必须将其放在引号中:
java -jar test.jar "test&1"
&
在* nix shell上也很特殊(但是以不同的方式,它在子shell中运行命令)。在那里,您可以使用上面的引号,或者在\
之前添加&
。但不是在Windows上。