Я сталкиваюсь со специфическим поведением конфигурации запуска Eclipse, и, похоже, это проблема только для Windows. Предположим, у меня есть приложение Java, которое выводит аргументы командной строки, например:
public class WildCard {
public static void main(String[] args) {
for (String arg: args) {
System.out.println(arg);
}
}
}
Если я предоставлю аргумент с подстановочным знаком, который может быть расширен оболочкой, оболочка развернет его и передаст программе Java. Это не удивительно. Итак, если я делаю в командной строке
java WildCard test/*
программа напечатает
test/foo.txt
test/bar.txt
где foo.txt и bar.txt - это файлы в каталоге "test".
Расширения оболочки могут быть предотвращены, если я заключу подстановочный аргумент в кавычки; одинарные кавычки на * nix и двойные кавычки на Windows. Так что для Windows, если я сделаю следующее в командной строке:
java WildCard "test/*"
Программа теперь напечатает
test/*
(без расширения).
Однако я обнаружил, что цитирование в панели запуска Eclipse, похоже, не имеет никакого эффекта, и аргумент все еще расширяется. Если я поставлю
"test/*"
в разделе аргументов программы в Eclipse run launcher и при запуске вышеупомянутого класса я все равно получаю
test/foo.txt
test/bar.txt
Другими словами, двойные кавычки, похоже, теряются, когда программа действительно запускается. Кажется, это происходит только с Windows.
Есть ли способ предотвратить глобальное расширение с помощью средства запуска Eclipse в Windows?