Wie vermeide ich eine Glob-Erweiterung, wenn ich eine Java-App in eclipse starte?
Es tritt ein spezielles Verhalten der Eclipse-Ausführungskonfiguration auf, und es handelt sich anscheinend nur um ein Windows-Problem. Angenommen, ich habe eine Java-App, die die folgenden Befehlszeilenargumente ausgibt:
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
Wenn ich Argumente mit einem Platzhalter versehen, der von der Shell erweitert werden kann, wird er von der Shell erweitert und an das Java-Programm übergeben. Das ist keine Überraschung. Also, wenn ich an der Eingabeaufforderung
java WildCard test/*
das Programm druckt
test/foo.txt
test/bar.txt
where foo.txt und bar.txt sind Dateien im Verzeichnis "test".
Shell-Erweiterungen können verhindert werden, wenn ich das Platzhalterargument in Anführungszeichen setze. einfache Anführungszeichen unter * nix und doppelte Anführungszeichen unter Windows. Also für Windows, wenn ich Folgendes an der Eingabeaufforderung mache:
java WildCard "test/*"
das Programm druckt jetzt
test/*
(keine Erweiterung).
Was ich jedoch finde ist, dass das Zitieren im Eclipse Run Launcher keine Wirkung zu haben scheint und das Argument immer noch erweitert wird. Wenn ich
"test/*"
in der Programmargument Sektion im Eclipse Run Launcher, und starte die obige Klasse, ich bekomme immer noch
test/foo.txt
test/bar.txt
Mit anderen Worten, die doppelten Anführungszeichen scheinen verloren zu sein, wenn das Programm tatsächlich ausgeführt wird. Dies scheint nur unter Windows zu passieren.
Gibt es eine Möglichkeit, die Glob-Erweiterung mit dem Eclipse Run Launcher unter Windows zu verhindern?