как избежать расширения глобуса при запуске приложения Java в Eclipse - PullRequest
10 голосов
/ 05 октября 2010

Я сталкиваюсь со специфическим поведением конфигурации запуска 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?

Ответы [ 2 ]

0 голосов
/ 16 июня 2014

Шаблон (.*) не будет расширен за счет затмения и все еще работает как регулярное выражение.

0 голосов
/ 03 ноября 2010

Проблема выглядит довольно запутанной:

*.txt
foo.*

НЕ будет расширена, но

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

будет расширена.

Похоже, только "все файлы", но все остальные строки (включая *) останутся без изменений.

У меня та же проблема, и я использую XP и eclipse 3.5.2

...