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?
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
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
Ich habe einen vorhandenen Eclipse Bug auf diesem ... http: // goo gefunden.gl/eM6e – sjlee