我希望将字符串“!changeme!”传递给Java程序,方式是通过命令行进行,例如:
我得到了以下结果:
java -cp "!AXIS2_CLASS_PATH!" ClientJava --userid admin --passwd "!changeme!"
使用Windows XP,Java jdk 1.6.0_07。
我认为AXIS2_CLASS_PATH被Java运行时正常替换。但是,!changeme!的密码似乎也被替换为空字符串。我猜测这种替换是JVM的某种特性。
使用以下程序:
static int Run(String[] aArgs) {
for (String s: aArgs) {
System.out.println("arg: " + s);
}
return 0;
}
我得到了以下结果:
"C:\Program Files\Java\jdk1.6.0_07\bin\java" -cp "!AXIS2_CLASS_PATH!"
ClientJava --userid admin --passwd "!changeme!"
arg: --userid
arg: admin
arg: --passwd
arg:
我希望密码能够原样传递。我尝试了各种转义,但没有找到需要使用的内容。
有人能提供如何做到这一点的提示吗?
解决方案,由Zach Scrivena提供:
使用插入符号(^)转义感叹号(!)。
java -cp "!AXIS2_CLASS_PATH!" ClientJava --xxx "^!changeme^!"
arg: --userid
arg: admin
arg: --passwd
arg: !changeme!