【问题标题】:Quotes in command line arguments passed to Java main()传递给 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\

【问题讨论】:

    标签: java netbeans escaping quotes


    【解决方案1】:

    这已被 netbeans 识别为a bug that won't be fixed

    【讨论】:

    【解决方案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 将在调用进程之前解析命令行,您无法撤消该解析。

        【讨论】:

          猜你喜欢
          • 2013-04-14
          • 2018-01-27
          • 2021-08-30
          • 1970-01-01
          • 2010-12-11
          • 1970-01-01
          • 2021-07-30
          • 2020-10-03
          • 1970-01-01
          相关资源
          最近更新 更多