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
). Работал как шарм!