Я столкнулся со специфическим поведением конфигурации запуска 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 и запускаю вышеупомянутый класс, я все равно получаю
test/foo.txt
test/bar.txt
Другими словами, двойные кавычки теряются, когда программа действительно запускается. Похоже, это происходит только с Windows.
Есть ли способ предотвратить расширение глобуса с помощью средства запуска Eclipse в Windows?