O Java é frequentemente chamado com caminhos absolutos como /usr/bin/java
, o que torna essa resposta inútil em alguns casos e exige mais para que funcione em outros.
Essa solução que eu encontrei requer escrever um script de shell que redireciona o STDERR através de um filtro removendo a linha ofensiva. Ele deve ser colocado no $PATH
antes do binário java que ele envolve e ser chamado com java
, which java
ou similar (ou sua ferramenta precisa ser configurada para usá-lo)
Ele conta com a habilidade bash de criar um subshell com parênteses (command)
e redirecionar o STDERR do java para 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 o STDERR.
#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)