Я обновил заголовок, пожалуйста, смотрите обновление ниже по причине.
Я задал этот вопрос на 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" %*