Я наблюдаю странное поведение поведения подстановочных расширений для Java7 в Windows.
На протяжении веков существовала чистая разница между "*" и "*" . Похоже, это не так актуально для Java7 (по крайней мере, на Windows7).
Я заметил проблему при использовании шаблона класса подстановок.
Несмотря на цитирование шаблона группового класса, он расширяется.
Таким образом, кажется, что больше невозможно передать шаблон в java-приложение.
Таким образом, использование java -cp "somewhere/*"
завершится с ошибкой (как и "somewhere\*"
).
Обходной путь выглядит следующим образом: java -cp "somewhere/*;"
, который препятствует расширению.
Чтобы проверить поведение, я написал небольшой класс Echo.java.
Я обнаружил, что использование java 1.6.0 с котировкой "*" и простой * работает, как и ожидалось, тогда как на Java7 я всегда получал расширенный шаблон. До сих пор это наблюдалось на Windows7, не знаю, что происходит на XP.
Проблема возникает, поскольку подстановочные знаки в Windows никогда не расширяются темным возрастом CMD.EXE(как и любая оболочка в UNIX). Вместо этого каждый исполняемый файл должен явно выполнять это с помощью setargv.obj.
Я обнаружил две связанные проблемы, которые, похоже, описывают аналогичную проблему:
- Множественное расширение командной строки пугает пользователей Windows
- отключена подстановка шаблона setargv.obj
Наблюдается ли это кто-то еще?
Или есть некоторые неясные настройки Windows или пакетного файла для управления этим?
Dieter.