2010-10-05 1 views
10

Ich bin in ein eigenartiges Verhalten der Eclipse-Run-Konfiguration, und es scheint ein Windows-Problem zu sein. Angenommen, ich habe eine Java-Anwendung, die die Befehlszeilenargumente druckt, wie folgt aus:So vermeiden Sie Glob-Erweiterung beim Ausführen von Java-app in Eclipse

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

Wenn ich Argument mit einer Wild Card zur Verfügung stellen, die von der Shell erweitert werden kann, wird die Shell erweitern es und geben es das Java-Programm. Das ist keine Überraschung. Also, wenn ich auf dem Kommando tue prompt

java WildCard test/* 

das Programm

test/foo.txt 
test/bar.txt 

drucken, wo foo.txt und bar.txt sind Dateien im Verzeichnis "test".

Shell-Erweiterungen können verhindert werden, wenn ich das Platzhalterargument in Anführungszeichen umschließe; einfache Anführungszeichen in * nix und doppelte Anführungszeichen unter Windows. Also für Windows, wenn ich folgendes an der Eingabeaufforderung zu tun:

java WildCard "test/*" 

wird das Programm jetzt

test/* 

(keine Erweiterung) drucken.

Was ich jedoch finde, ist, dass das Zitat in der Eclipse Run Launcher scheint keine Wirkung zu haben, und das Argument ist noch erweitert. Wenn ich

"test/*" 

im Programmargument Abschnitt in den Eclipse-Laufwerfern setzen, und die obige Klasse laufe, bekomme ich immer noch

test/foo.txt 
test/bar.txt 

Mit anderen Worten scheinen die doppelten Anführungszeichen verloren werden, wenn die Programm läuft tatsächlich. Dies scheint nur mit Windows zu passieren.

Gibt es eine Möglichkeit, die Glob-Erweiterung mit dem Eclipse Run Launcher unter Windows zu verhindern?

+0

Ich bin geneigt zu glauben, dass dies ein Bug mit Eclipse ist, aber wollte sehen, ob es eine praktikable Lösung für das Problem gibt. – sjlee

+0

Mein Vorschlag, den Platzhalter mit Backslashes zu umgehen, funktioniert nicht wirklich. Es ** funktioniert ** in dem Testfall, den ich verwendet habe (und ich weiß immer noch nicht warum), aber nicht in anderen Fällen. Ich lösche meine Antwort, da sie das Problem nicht löst. – Grodriguez

+4

Ich habe einen vorhandenen Eclipse Bug auf diesem ... http: // goo gefunden.gl/eM6e – sjlee

Antwort

0

Das Problem sieht ganz verdrahtet:

*.txt 
foo.* 

wird nicht erweitert, sondern

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

wird erweitert.

Es sieht so aus, als ob nur "alle Dateien" erweitert werden, aber alle anderen Zeichenfolgen (einschließlich *) bleiben unverändert.

Ich bin auf dem gleichen Problem, und ich benutze XP und Eclipse 3.5.2

0

Das Muster (.*) wird nicht von Eclipse erweitert werden, und arbeitet immer noch als regex.

Verwandte Themen