java - Java main 函数中 args 的分割规则?

标签 java 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&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/

相关文章:

java - 如何优化 Mongodb 的查询

java - 奇怪的内存使用情况

java - jackson 内心深处 - 我如何从 setter/getter 中获取属性名称

java - 将Resin源导入Eclipse

c - 需要 int args(线程)的帮助

linux - 将参数传递并解析到正在运行/在线的 systemd 守护进程

python - 如何启用定义输入作为可选?

java - 在 jdbc 应用程序中向前移动 rs.next()

c# - 这是评估 Main(string[] args) 的矫枉过正吗

python:我什么时候可以解压生成器?