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

问题描述:

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

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

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

+0

您是否尝试过导航到运行配置窗口中的“环境”选项卡,然后按“选择”,并选择环境变量? – jluzwick 2011-02-01 17:41:54

+0

我不想设置变量,我想转义文本,以便Eclipse将其作为字符串传递,而不是用“变量”的内容替换它。它可能会将变量$ {foo}设置为“$ {foo}”,但是... – schmmd 2011-02-09 17:50:52

你必须在Eclipse中定义一个变量: 名=美元,价值= $

(这可以在“运行配置”对话框来完成,当你输入你的论点,单击“变量... “,然后单击”编辑变量...“,并添加该变量)。

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

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

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

我不认为有什么办法可以在Eclipse中做到这一点。

违规代码位是org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute

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

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