Я использую _JAVA_OPTIONS, чтобы установить некоторые значения по умолчанию для Java на RHEL. Это работает нормально, но теперь каждый раз, когда я запускаю Java, я получаю следующее сообщение
Picked up _JAVA_OPTIONS: -foo -bar -baz
Можно ли сохранить параметры, но подавить отображение этого сообщения.
Java часто вызывается с абсолютными путями типа /usr/bin/java, что делает этот ответ бесполезным в некоторых случаях и требует большего, чтобы заставить его работать в других.
Это решение, которое я нашел, требует написания сценария оболочки-оболочки, который перенаправляет STDERR через фильтр, удаляющий ошибочную строку. Он должен быть помещен в $PATHперед Явой двоичным это оборачивает и вызываются с простым java, which javaили аналогичным (или вашим инструментом должен быть настроен для использования его)
Он полагается на способность bash создавать подоболочку с круглыми скобками (command)и перенаправлять STDERR Java в его STDIN command1 2> >(command2). Наконец, процесс в подоболочке должен снова перенаправить свой отфильтрованный ввод в STDOUT, чтобы Java-программы все еще могли использовать STDERR.
#!/bin/bash/usr/bin/java "$@"2>>(grep -v "^Picked up _JAVA_OPTIONS:">&2)
Вероятно, ужасная практика, но это для образа докера, и я устал от всего красного во время docker build- но я переименовал ${JAVA_HOME}/bin/javaв java2и поместил туда измененную версию этого скрипта как java(с chmod +x). Работал как шарм!
BrainSlugs83
2
Или вы можете поместить это в файлы запуска / профиля вашей оболочки:
_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
это работает только при прямом вызове java ...через командную строку. все вызовы Java через сценарии или другие родительские процессы не будут затронуты
летающая овца
ну, вы можете изменить / bin / java на сценарий оболочки, который делает то же самое, если вы действительно этого хотите.
spelufo
даже если вы этого не сделаете, параметры будут сброшены, поэтому будут затронуты и другие команды. Это заставит их замолчать, не передавая им никаких вариантов :).
docker build
- но я переименовал${JAVA_HOME}/bin/java
вjava2
и поместил туда измененную версию этого скрипта какjava
(сchmod +x
). Работал как шарм!Или вы можете поместить это в файлы запуска / профиля вашей оболочки:
источник
java ...
через командную строку. все вызовы Java через сценарии или другие родительские процессы не будут затронуты