2014-10-08 44 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