2010-10-05 21 views
10

Je rencontre un comportement particulier de la configuration de l'exécution d'Eclipse, et cela semble être un problème uniquement lié à Windows. Supposons que j'ai une application Java qui imprime les arguments de ligne de commande, comme ce qui suit:comment éviter l'expansion glob lors de l'exécution de l'application Java en eclipse

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

Si je donne l'argument avec une carte sauvage qui peut être étendu par la coquille, la coquille se développer et donner à le programme Java. Ce n'est pas une surprise. Donc, si je fais sur l'invite de commande

java WildCard test/* 

le programme imprimera

test/foo.txt 
test/bar.txt 

où foo.txt et bar.txt sont des fichiers dans le répertoire « test ».

Les expansions de shell peuvent être évitées si j'entoure l'argument générique entre guillemets; guillemets simples sur * nix, et guillemets doubles sur Windows. Donc, pour Windows, si je fais ce qui suit à l'invite de commande:

java WildCard "test/*" 

le programme va maintenant imprimer

test/* 

(pas d'expansion). Cependant, ce que je trouve est que la citation dans le lanceur d'exécution Eclipse semble n'avoir aucun effet, et l'argument est encore développé. Si je mets

"test/*" 

dans la section argument du programme dans le lanceur d'exécution Eclipse et exécuter la classe ci-dessus, je reçois toujours

test/foo.txt 
test/bar.txt 

En d'autres termes, les guillemets doubles semblent être perdus lorsque la programme fonctionne réellement. Cela semble se produire uniquement avec Windows.

Existe-t-il un moyen d'empêcher l'expansion glob avec le lanceur d'exécution Eclipse sous Windows?

+0

Je suis enclin à croire que c'est un bug avec eclipse, mais je voulais voir s'il y avait une solution de contournement viable au problème. – sjlee

+0

Ma suggestion d'échapper le caractère générique avec des barres obliques inverses ne fonctionne pas vraiment. Cela fonctionne ** dans le cas de test que j'ai utilisé (et je ne sais toujours pas pourquoi) mais pas dans d'autres cas. Je supprime ma réponse car elle ne résout pas réellement le problème. – Grodriguez

+4

J'ai trouvé un bug d'éclipse existant sur ce ... http: // goo.gl/eM6e – sjlee

Répondre

0

Le problème semble tout à fait filaire:

*.txt 
foo.* 

ne seront PAS traitées mais

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

sera élargi.

Il semble que seul "tous les fichiers" est développé, mais toutes les autres chaînes (y compris *) resteront inchangées.

Je suis au même problème et j'utiliser XP et Eclipse 3.5.2

0

Le motif (.*) ne sera pas élargit la portée éclipse, et fonctionne toujours comme une expression régulière.