Неработающее расширение подстановочных знаков для командной строки Java7 в Windows (7?)

Я наблюдаю странное поведение расширения с подстановочными знаками для Java7 в Windows.

На протяжении веков существовала явная разница между «*» и *.
Похоже, это уже не так для Java7 (по крайней мере, для Windows7).

Я заметил проблему при использовании пути к классам с подстановочными знаками .
Несмотря на то, что путь к классам с подстановочными знаками указан в кавычках, он расширяется.
Таким образом, кажется, что больше невозможно передать подстановочный знак в приложение java.

Таким образом, использование java -cp "где-то / *" завершится ошибкой (как и "где-то \ *" ).

Похоже, что обходной путь: java -cp "where / *;" , который запрещает расширение.

Чтобы проверить поведение, я написал небольшой класс Echo.java.

Я обнаружил, что использование java 1.6.0 в кавычках "*" и обычном * работает, как ожидалось, тогда как на Java7 я всегда получал расширенный подстановочный знак. До сих пор это наблюдалось в Windows7, не знаю, что происходит в XP.

Проблема возникает, поскольку символы подстановки в Windows никогда не расширяются с помощью CMD.EXE темного века (как это делает любая оболочка в UNIX). Вместо этого каждый исполняемый файл должен выполнить это явно, используя setargv.obj .

Я обнаружил две связанные проблемы, которые, кажется, описывают схожую проблему:

Наблюдал ли это кто-то еще?
Или есть какие-то неясные настройки Windows или командного файла для управления этим?

Дитер.

16
задан Ditz 8 February 2012 в 17:10
поделиться