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.
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)
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"'
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 :).
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!Ou você pode colocar isso nos arquivos de inicialização / perfil do shell:
fonte
java ...
através da linha de comando. todas as invocações java através de scripts ou outros processos pai não será afetada