2

Либо я делаю что-то глупое, либо Солнце есть. Как получилось что-то вроде:

java -version > version.txt

Все еще выводит на stdout и оставляет version.txt пустым? Я проверяю код завершения, и он по-прежнему равен 0, поэтому он не пишет в stderr.

Мне это нужно, потому что я создаю инструмент для тестовой среды и хочу проверить, адекватна ли версия Java, я планировал получить выходные данные этой версии, но теперь я застрял.

Я на OS X Leopard, Java версии 1.6.0_20.

Есть идеи?

3 ответа3

9
java -version &> version.txt

Код выхода не имеет никакого отношения к тому, где он выводит.

9

Это своего рода особенность в наше время. ;-)

Из древнего сообщения об ошибке:

Мы должны очень, очень тщательно подумать, прежде чем исправлять эту ошибку. Очевидно, неправильно выводить информацию о версии в stderr, но, поскольку мы занимаемся этим с самого начала, представляется вероятным, что мы сломаем существующие системы, построенные на основе Java, если мы изменим их сейчас. Если мы решим изменить это, то должны дождаться выпуска Tiger, чтобы можно было провести адекватное тестирование.

1

Так же, как дополнение к ответу Игнасио:

Анализ выходных данных java -version довольно сложен и подвержен ошибкам (и не всегда гарантируется, что выходные данные будут иметь одинаковый формат, особенно с JVM, не относящимися к Sun).

Чтобы проверить версию Java, вы можете запустить небольшую программу Java, которая проверяет соответствующие системные свойства: см. Javadocs для getProperties(). Это официальный, документированный способ получения информации о среде Java. Вы, вероятно, хотите проверить:

  • java.version (точный номер версии установки Java, например, 1.6.0_15)
  • java.specification.version (версия платформы Java, например, 1.5 или 1.6)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .