在我的 Java 命令行参数中,空格后面的任何字符都会被忽略。例如:
java test.AskGetCampaignByName "Dummy books"
我只得到了第一个参数(args [0])作为“Dummy”。单引号也没有起到帮助作用。是否有解决方法/修复方法?这可能是因为我的终端设置吗?
我的$TERM是xterm,$LANG是“en_IN”。在我的 Java 命令行参数中,空格后面的任何字符都会被忽略。例如:
java test.AskGetCampaignByName "Dummy books"
我只得到了第一个参数(args [0])作为“Dummy”。单引号也没有起到帮助作用。是否有解决方法/修复方法?这可能是因为我的终端设置吗?
我的$TERM是xterm,$LANG是“en_IN”。strace -o outfile -f -ff -F java test.AskGetCampaignByName "Dummy books"
运行"strace /bin/echo '1 2' 3
"的示例,查找传递给execve
的参数。
execve("/bin/echo", ["/bin/echo", "1 2", "3"], [/* 93 vars */]) = 0
brk(0) = 0x2400000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f420075b000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f420075a000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib64/alliance/lib/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
stat("/usr/lib64/alliance/lib/tls/x86_64", 0x7fff08757cd0) = -1 ENOENT (No such file or directory)
open("/usr/lib64/alliance/lib/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
...
你只需要像这样转义空格:
normal String: "Hello World!"
escaped String: "Hello" "World!"
那对我有用。
我的环境:
23:39:19 Zarathustra@thora:/Users/Zarathustra~$bash -version
GNU bash, version 3.2.48(1)-release (x86_64-apple-darwin11)
Copyright (C) 2007 Free Software Foundation, Inc.
看起来你正在使用一个操作系统发行版,其中用户可用的java
命令是一个包装器,它会找到正确的JVM并相应地调用它。
如果是这样的话,在调用实际的java
可执行文件时,它很可能无法适当地转义参数。
你使用的是哪个发行版?
"hello world" "hello world" "hello world"
将被选中为args[0(/1)(/2)] == "hello world",但在Linux上,这根本不起作用(我不记得它到底做了什么,因为我并不是太关心)。但是,我很乐意看到任何解决方案。感谢提问。@Thorbjørn Ravn Andersen,请详细说明。我该如何更改JVM调用的方式? - Peter PerháčStringBuilder allArgs = new StringBuilder();
for (int i=0; i < args.length; i++)
{
//System.out.println("arg"+i+": "+args[i]);
allArgs.append(args[i]+" ");
}
// Parse out the args the way you wish using allArgs
java test.AskGetCampaignByName "Dummy books"
中,Dummy
和 books
之间有多个空格会导致失败(Stack Overflow 输出为单个空格,所以你在这里看不到...)。 - leemesjava
应该从shell正确获取命令行参数。 - Olathe