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