Я наблюдаю странное поведение расширения с подстановочными знаками для 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 или командного файла для управления этим?
Дитер.