2011-01-26 11 views
11

In Eclipse, quando si specifica argomenti nella finestra di dialogo Esegui, Eclipse interpreta ${foo} come una richiesta di utilizzare l'Eclipse variabile foo. Vorrei passare una stringa alla mia applicazione che contiene ${foo} ma Eclipse considera questa come una variabile indefinita e mi dà un errore.

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

Eclipse non accetta il singolo apice (') come carattere citando, invece diventa parte dell'ingresso. Qualcuno sa come posso sfuggire a ${foo} in questa finestra di dialogo in modo che venga interpretato come testo e non come riferimento di variabile?

+0

avete provato spostarsi nella scheda "Ambiente" nelle configurazioni finestra Esegui e poi premendo il tasto "Select" e selezionando la variabile Ambiente? – jluzwick

+0

Non voglio impostare una variabile, voglio scappare del testo così Eclipse lo passa come una stringa invece di rimpiazzarla con il contenuto della "variabile". Potrebbe funzionare per impostare la variabile $ {foo} su "$ {foo}" comunque ... – schmmd

+0

Sto cercando una risposta che sfugge a $ {foo} quando è tra virgolette. – schmmd

risposta

5

è necessario definire una variabile in Eclipse: name = dollaro, valore = $

(Questo può essere fatto nella finestra di "configurazione di esecuzione", quando si digita i tuoi argomenti, fare clic su "Variabili ... ", quindi fare clic su" Modifica variabili ... "e aggiungere la variabile).

Poi, negli argomenti casella di testo, tipo $ {dollaro} "{pippo}"

14

$ {foo} di per sé può essere sfuggito con $ "{foo}".

Quando $ {pippo} fa già parte di una stringa doppiamente citata, come nella tua domanda, non sono sicuro di come o se possa essere sfuggito.

+0

funziona come un fascino su linux e windows – ctron

+0

Questo ha funzionato per me. Ho creato una configurazione di esecuzione per Maven e sono stato in grado di aggiungere questo: 'exec.workdir -> target/$" project.build.finalName "' nell'elenco degli argomenti. Ma non ero in grado di utilizzare la stessa sintassi nel campo "Directory di base". – Coyotwill

7

Non credo che ci sia un modo per farlo in Eclipse.

Il bit di codice offensivo è org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute.

Questo è il bit di codice che sostituisce $ {foo} con qualsiasi cosa tu abbia definito foo. Sfortunatamente, può gestire variabili nidificate e concatenate, quindi se dollar = "$" e rest = "{foo}" allora $ {dollar} $ {rest} dà $ {pippo} che viene nuovamente valutato.

Per informazioni, nel report del codiceUndefinedVariables è hardcoded come true più in alto nello stack, motivo per cui viene visualizzato il messaggio di errore. Non sembra esserci alcun modo di cambiarlo.

Problemi correlati