传递给 Java main() 的命令行参数中的引号
Posted
技术标签:
【中文标题】传递给 Java main() 的命令行参数中的引号【英文标题】:Quotes in command line arguments passed to Java main() 【发布时间】:2011-04-26 23:41:25 【问题描述】:我使用以下命令行运行 Java 程序(编辑:在 NetBeans 6.8 项目属性中)
toto has:"tutu titi"
args 是一个由 2 个字符串组成的数组
toto
has:tutu titi
我希望(确实是两个参数,第二个)args[1]
是
has:"tutu titi"
我该怎么做?
编辑:我已经尝试在 Netbeans 项目属性的“参数”行中用反斜杠转义引号,但我得到了 args[1]
has:\tutu titi\
【问题讨论】:
【参考方案1】:这已被 netbeans 识别为a bug that won't be fixed!
【讨论】:
您是否有任何链接可以证实这一事实?如果您可以将这些添加到您的答案中,它将使其更具相关性。 我认为这是链接 [link]netbeans.org/bugzilla/show_bug.cgi?id=191254【参考方案2】:如果从 NetBeans (7.1.2) 配置/参数对话框字段添加,单引号外部和转义双引号内部对我有用,例如:
my argument
【讨论】:
【参考方案3】:我在 NetBeans 中遇到过类似的问题并找到了解决方案:
在您的 private.properties 中编辑/添加属性“application.args”:
application.args='has:""tutu titi""'
单引号标记您的“参数”,两个双引号定义一个“双引号”。
【讨论】:
【参考方案4】:使用
toto "has:\"tutu titi\""
【讨论】:
在 shell 中,has:"tutu titi" 已被视为单个参数。无需在周围添加额外的引号。 @rds: 你已经转义了引号。【参考方案5】:这真的取决于你的外壳。你还没有说你使用的是什么操作系统。例如,在 Windows 上这将起作用:
java Test toto "has:\"tutu titi\""
我相信同样的事情也适用于 bash。
但是,如果您问的是 在 Java 中 可以做什么来解决这个问题:没有。 shell 将在调用进程之前解析命令行,您无法撤消该解析。
【讨论】:
以上是关于传递给 Java main() 的命令行参数中的引号的主要内容,如果未能解决你的问题,请参考以下文章