2010-10-05 4 views
10

Me encuentro con un comportamiento peculiar de la configuración de ejecución de Eclipse, y parece ser un problema solo de Windows. Supongamos que tengo una aplicación Java que imprime los argumentos de línea de comandos, como el siguiente:cómo evitar la expansión global al ejecutar la aplicación Java en eclipse

public class WildCard { 
    public static void main(String[] args) { 
     for (String arg: args) { 
      System.out.println(arg); 
     } 
    } 
} 

Si proporciono discusión con un comodín que puede ser ampliado por la cáscara, la cáscara se expandirá y darle a el programa Java. Eso no es sorpresa. Por lo tanto, si lo hago en el símbolo del sistema

java WildCard test/* 

el programa imprimirá

test/foo.txt 
test/bar.txt 

donde foo.txt y bar.txt son archivos de la "prueba" directorio.

Las expansiones de la carcasa se pueden evitar si rodeo el argumento comodín entre comillas; comillas simples en * nix, y comillas dobles en Windows. Así que para Windows, si hago lo siguiente en el símbolo del sistema:

java WildCard "test/*" 

el programa imprimirá ahora

test/* 

(sin expansión).

Sin embargo, lo que encuentro es que las comillas en el ejecutable de ejecución Eclipse parecen no tener ningún efecto, y el argumento aún se expande. Si pongo

"test/*" 

en la sección argumento de programa en el plazo de lanzamiento de Eclipse, y correr la clase anterior, sigo teniendo

test/foo.txt 
test/bar.txt 

En otras palabras, las comillas dobles parecen estar perdido cuando el programa realmente se ejecuta. Esto parece suceder solo con Windows.

¿Hay alguna forma de evitar la expansión glob con el ejecutable de ejecución Eclipse en Windows?

+0

Me inclino a creer que esto es un error con el eclipse, pero quería ver si hay una solución viable al problema. – sjlee

+0

Mi sugerencia de escapar del comodín con barras diagonales realmente no funciona. ** Funciona ** en el caso de prueba que utilicé (y todavía no sé por qué), pero no en otros casos. Estoy borrando mi respuesta ya que en realidad no está resolviendo el problema. – Grodriguez

+4

Encontré un error de eclipse existente en esto ... http: // goo.gl/eM6e – sjlee

Respuesta

0

El problema parece bastante cable:

*.txt 
foo.* 

no se expandirán, pero

* 
*.* 
"*" 
"*.*" 
\"*\" 
\"*.*\" 

se ampliará.

Parece que solo "todos los archivos" están expandidos, pero las demás cadenas (incluyendo *) no se modificarán.

Estoy en el mismo problema y yo uso XP y Eclipse 3.5.2

0

El patrón (.*) no se ampliará por el eclipse, y todavía funciona como una expresión regular.

Cuestiones relacionadas