我需要使用空格将参数传递给我在Eclipse中运行的应用程序。在Windows中,以下语法有效:
param="%Some Name%"
在Linux中,该参数始终作为单独的参数传递给解释它的Java代码。
使用Bash,以下语法有效:
"param=%Some Name%"
即。如果我复制完整命令并在终端中运行它,它会正确启动应用程序并将参数作为单个参数传递。
在Eclipse中,它仍然会围绕空格分割参数。
我尝试用斜杠('\')转义空格。我试过用单引号替换引号。我已经尝试了所有3种可能的组合。我无法解释/理解Eclipse在这里做了什么,它在Windows中有不同的作用。
谷歌/搜索也证明是非常困难的。
更复杂的是,这不是标准的运行配置。它使用VexiDev(source here)Eclipse功能。
答案 0 :(得分:1)
您是否尝试将整个属性封装在这样的引号中:
"-Dlog4j.configuration=/config location/log4j.properties"
这适用于我的机器。(Linux)
答案 1 :(得分:1)
这也花了我一段时间,但我找到了答案。 像下面的示例一样,将“运行配置”参数放在单引号中,并带有3个参数:
SVCNOW'这是摘要''这是描述'
“显示命令行”不会显示双引号,但在运行类时它们会在其中。
答案 2 :(得分:0)
我能够做到这一点,但是我不得不绕过Eclipse并从命令行完成它。
我找到了包含运行配置的文件。
它在工作区的.metadata目录中,并以“ .launch”结尾
例如:
./workspace/.metadata/.plugins/org.eclipse.debug.core/.launches/FetchTest.launch
该文件是xml文件。
它具有用于VM参数的键条目,您可以在该条目中使用XML转义来指定字符。
所以要做类似的事情
-ea -Dfile.encoding=UTF-8 -Duser.timezone=UTC -Dparam="Complicated Thing"
更改启动文件
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-ea -Dfile.encoding=UTF-8 -Duser.timezone=UTC -Dparam="Complicated Thing""/>
然后我必须重新启动Eclipse以使其注意到更改。
答案 3 :(得分:0)
我认为诀窍是确保您在Eclipse GUI中输入双引号,而不是默认情况下获得的unicode智能引号。
如果不是从终端或纯文本编辑器中复制双引号,而是将其复制并粘贴到参数框中,则它应该可以工作。