O Java geralmente é chamado com caminhos absolutos /usr/bin/java
, o que torna essa resposta inútil em alguns casos e requer mais para fazê-la funcionar em outros.
Essa solução que encontrei requer a criação de um script de shell wrapper que redirecione o STDERR através de um filtro, removendo a linha incorreta. Tem que ser colocado no $PATH
antes do java binário que envolve e ser chamado com planície java
, which java
ou similar (ou sua ferramenta tem de ser configurado para usá-lo)
Ele conta com a capacidade do bash de criar um subshell com parênteses (command)
e redirecionar o STDERR do java para o seu STDIN command1 2> >(command2)
. Finalmente, o processo no subshell precisa redirecionar sua entrada filtrada para STDOUT novamente, para que os programas java ainda possam usar STDERR.
#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)
docker build
- mas eu renomeado${JAVA_HOME}/bin/java
parajava2
e colocar uma versão modificada desse script lá comojava
(comchmod +x
). Funcionou como um encanto!