如何在运行配置中将文字变量引用($ {foo})作为程序参数传递

时间:2011-01-26 05:53:20

标签: eclipse

在Eclipse中,当您在运行对话框中指定参数时,Eclipse会将${foo}解释为使用Eclipse变量 foo 的请求。我想将一个字符串传递给包含${foo}的应用程序,但Eclipse将其视为未定义的变量并给出错误。

 -Dfoo "bar" --pattern "regex magic ${foo}"

Eclipse不接受单引号(')作为引用字符,而是成为输入的一部分。有没有人知道如何在这个对话框中转义${foo},因此它被解释为文本而不是变量引用?

3 个答案:

答案 0 :(得分:15)

$ {foo}本身可以使用$“{foo}”转义。

当$ {foo}已经是双引号字符串的一部分时,就像在你的问题中一样,我不确定它是如何或是否可以被转义。

答案 1 :(得分:9)

我认为在Eclipse中没有办法做到这一点。

令人讨厌的代码是org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute

这是代替$ {foo}的代码,用你定义的foo代替。不幸的是,它可以处理嵌套和连接的变量,所以如果dollar =“$”和rest =“{foo}”那么$ {dollar} $ {rest}会给$ {foo}再次进行评估。

有关信息,在代码reportUndefinedVariables中硬编码为真正的堆栈,这就是你收到错误消息的原因。似乎没有任何改变它的方法。

答案 2 :(得分:6)

您必须在Eclipse中定义变量: name = dollar,value = $

(这可以在“运行配置”对话框中完成,当您键入参数时,单击“变量...”,然后单击“编辑变量...”,并添加该变量)。

然后,在参数文本框中键入 $ {美元} “FOO {}”