2011-01-26 23 views
11

En Eclipse, cuando se especifica argumentos en el diálogo de ejecución, Eclipse interpreta ${foo} como una solicitud para utilizar el Eclipse variables foo. Me gustaría pasar una cadena a mi aplicación que contiene ${foo} pero Eclipse la trata como una variable indefinida y me da un error.

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

Eclipse no acepta la comilla simple (') como carácter citando, sino que se convierte en parte de la entrada. ¿Alguien sabe cómo puedo escapar al ${foo} en este cuadro de diálogo para que se interprete como texto y no como una referencia de variable?

+0

has necesitado navegando a la pestaña "medio ambiente" en la ventana de configuraciones de ejecución y luego presionando "Select" y seleccionando la variable de entorno? – jluzwick

+0

No quiero establecer una variable, quiero escanear el texto para que Eclipse lo pase como una cadena en lugar de reemplazarlo con el contenido de la "variable". Sin embargo, podría funcionar establecer la variable $ {foo} en "$ {foo}" ... – schmmd

+0

Estoy buscando una respuesta que escapa $ {foo} cuando está entre comillas dobles. – schmmd

Respuesta

5

tiene que definir una variable en Eclipse: name = dólar, valor = $

(Esto se puede hacer en el diálogo de "configuración de ejecución", cuando escribe sus argumentos, haga clic en "Variables ... ", y luego haga clic en" Editar variables ... "y agregue esa variable).

A continuación, en el cuadro de texto argumentos, el tipo $ {dólar} "{foo}"

14

$ {foo} por sí solo se puede escapar con $ "{foo}".

Cuando $ {foo} ya es parte de una cadena doblemente citada, como en su pregunta, no estoy seguro de cómo o si se puede escapar.

+0

funciona como un encanto en Linux y Windows – ctron

+0

Esto funcionó para mí. Creé una configuración de ejecución para maven y pude agregar esto: 'exec.workdir -> target/$" project.build.finalName "' en la lista de argumentos. Pero no pude usar la misma sintaxis en el campo "Directorio base". – Coyotwill

7

No creo que haya ninguna manera de hacer esto en Eclipse.

El bit de código ofensivo es org.eclipse.core.internal.variables.StringSubstitutionEngine#substitute.

Este es el código que sustituye $ {foo} por lo que usted haya definido como foo. Desafortunadamente, puede hacer frente a variables anidadas y concatenadas, por lo que si dollar = "$" y rest = "{foo}", entonces $ {dollar} $ {rest} da $ {foo} que se vuelve a evaluar.

Para información, en el informe de códigoUndefinedVariables está codificado como verdadero más arriba en la pila, por lo que aparece el mensaje de error. No parece haber ninguna forma de cambiarlo.

Cuestiones relacionadas