Suprimindo a mensagem "Pegadas _JAVA_OPTIONS"

13

Estou usando _JAVA_OPTIONS para definir alguns padrões para Java no RHEL. Funciona bem, mas agora, toda vez que inicio o java, recebo a seguinte mensagem

 Picked up _JAVA_OPTIONS: -foo -bar -baz

é possível manter as opções, mas suprimir a exibição desta mensagem.

ovelha voadora
fonte

Respostas:

11

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 $PATHantes do java binário que envolve e ser chamado com planície java, which javaou 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)
ovelha voadora
fonte
Provavelmente prática terrível, mas é para a imagem uma janela de encaixe e eu tenho cansado de toda a vermelho durante o docker build- mas eu renomeado ${JAVA_HOME}/bin/javapara java2e colocar uma versão modificada desse script lá como java(com chmod +x). Funcionou como um encanto!
BrainSlugs83
2

Ou você pode colocar isso nos arquivos de inicialização / perfil do shell:

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
spelufo
fonte
isso só funciona quando invocado diretamente java ...através da linha de comando. todas as invocações java através de scripts ou outros processos pai não será afetada
voando ovelhas
bem, você pode alterar / bin / java para ser um script de shell que faz a mesma coisa se você realmente quiser.
Spelufo
mesmo que não o faça, as opções serão desabilitadas, portanto outros comandos também serão afetados. Ele irá silenciá-los, não lhes dando opções :).
Spelufo