2014-10-08 41 views
0

我需要启动外部Java进程。参数在其他地方形成,并作为单个字符串传递给我。我需要找到一个特定的“-D”键并在实际运行过程之前更新它的值。将参数拆分命令行

例子:

java -Dosgi.framework.extensions="foo bar" "fdf -Dosgi.framework.extensions=bim bom" 

应该改为:

java -Dosgi.framework.extensions="bar" "fdf -Dosgi.framework.extensions=bim bom" 

如何正确令牌化的论点?显然,按空间划分不是一种选择。 如果可能,我想使用Eclipse基础结构中的插件。

+0

相关:http://stackoverflow.com/q/1200054/10077 – 2014-10-08 14:36:55

回答

1

看看thisthis它是一个API来帮助命令行选项。

+0

这些提供标记器吗?我担心再次重新加入它们的解析选项不会保持命令行尽可能接近原始。 (就像把报价放在不同的位置) – Basilevs 2014-10-08 15:01:40

+0

我不知道。我从来没有使用它们,但看到他们可以做选择,所以我假设他们做一些背景标记处理。 – jgr208 2014-10-08 15:06:07

+0

我有一个类似的问题,IIRC上面提到的和其他常用命令行解析器期望已经标记了命令行。也许我错过了一些东西,但最后我写了[自己的标记器](https://github.com/rherrmann/gonsole/blob/master/com.codeaffine.console.core/src/com/codeaffine/console/core /internal/CommandLineTokenizer.java)(和[tests](https://github.com/rherrmann/gonsole/blob/master/com.codeaffine.console.core.test/src/com/codeaffine/console/core/internal /CommandLineTokenizerTest.java))。随意使用或采用代码。 – 2014-10-08 15:31:27