Перенаправление STDOUT в файл не работает, если скрипт Groovy запускается непосредственно из командной строки (.groovy в PATHEXT)

1743
yuk

Я обновил заголовок, пожалуйста, смотрите обновление ниже по причине.

Я задал этот вопрос на 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" %* 
0
Когда вы просто запускаете `test.groovy`, что-нибудь появляется в консоли? Возможно, что запуск через расширение препятствует стандартному выводу. John 12 лет назад 0
@Джон: Да, без перенаправления все работает хорошо. Я вижу строку вывода в консоли. Спасибо yuk 12 лет назад 0

0 ответов на вопрос