Перенаправление STDOUT в файл не работает, если скрипт Groovy запускается непосредственно из командной строки (.groovy в PATHEXT)
Я обновил заголовок, см. Обновление ниже по причине.
Я задал этот вопрос на Stackoverflow, но до сих пор не получил ответа.
Groovy: перенаправление stdout в файл не работает.
Я решил спросить здесь, так как думаю, что это может быть не проблема программирования, а скорее некоторая проблема с установкой Groovy, конфликтом версий и т. Д.
Вот некоторые подробности.
Я написал очень простой скрипт для вывода строки в stdout с помощью System.out.println. Это работает, если я не хочу перенаправить вывод в файл. Интересно, что файл создан, но он пуст.
Я также попробовал простой скрипт "Hello, World" с Java (тот же JDK), и он хорошо работает.
Кто-то подтвердил в комментариях, что мой скрипт Groovy правильно перенаправляет на Windows и OS X.
Установка Groovy была свежей с последней версией. Я следовал всем инструкциям по установке. Я попытался запустить некоторые существующие сценарии, и все работает, кроме этого перенаправления.
Я понятия не имею, где искать сейчас. Пожалуйста помоги.
Groovy Version: 1.8.4 JVM: 1.7.0_02`
OS: Windows 7 64-bit Pro
GROOVY_HOME: C:\Program Files (x86)\Groovy\Groovy-1.8.4\
JAVA_HOME: C:\Program Files (x86)\Java\jdk1.7.0_02
ОБНОВИТЬ
Хорошо, я только что попробовал еще одну вещь, которая приходит на ум. я имею .groovy
Расширение связано с Groovy исполняемого файла, поэтому я могу запустить скрипт без ввода groovy
, Так я и сделал test.groovy > test.txt
и это не сработало.
Сейчас я попробовал groovy test.groovy > test.txt
и это работает!
Так что вопрос теперь проще. Почему перенаправление не работает, если я не использую groovy
в командной строке?
Пожалуйста, также порекомендуйте, что мне делать с этим вопросом? Удалить версию SO?
ОБНОВЛЕНИЕ 2: Вот соответствующая запись реестра (HKCR\Groovy\shell\open\command):
"C:\Program Files (x86)\Groovy\Groovy-1.8.4\bin\groovy.exe" "%1" %*