Estoy usando _JAVA_OPTIONS para establecer algunos valores predeterminados para Java en RHEL. Funciona bien, pero ahora cada vez que inicio Java, recibo el siguiente mensaje
Picked up _JAVA_OPTIONS: -foo -bar -baz
¿Es posible mantener las opciones pero suprimir la visualización de este mensaje?
A menudo se llama a Java con rutas absolutas como /usr/bin/java, lo que hace que esta respuesta sea inútil en algunos casos y requiere más para que funcione en otros.
Esa solución que encontré requiere escribir un script de shell de envoltura que redirija a STDERR a través de un filtro que elimine la línea ofensiva. Tiene que ser colocado en el $PATHantes de que el java binario que envuelve y se llama con llana java, which javao similar (o su herramienta tiene que ser configurado para usarlo)
Se basa en la capacidad de bash para crear una subshell con paréntesis (command)y redirigir el STDERR de Java a su STDIN command1 2> >(command2). Finalmente, el proceso en el subshell necesita redirigir su entrada filtrada a STDOUT nuevamente para que los programas java puedan seguir utilizando STDERR.
#!/bin/bash/usr/bin/java "$@"2>>(grep -v "^Picked up _JAVA_OPTIONS:">&2)
Probablemente terrible práctica, pero es una imagen de ventana acoplable para y me cansé de todo el rojo durante la docker build- pero a llamarse ${JAVA_HOME}/bin/javaa java2y poner una versión modificada de este script en allí java(con chmod +x). ¡Trabajado como un encanto!
BrainSlugs83
2
O puede poner esto en los archivos de inicio / perfil de su shell:
_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
eso solo funciona cuando se invoca directamente a java ...través de la línea de comando. todas las invocaciones de Java a través de secuencias de comandos u otros procesos padre no se verán afectados
ovejas volar
bueno, puedes cambiar / bin / java para que sea un script de shell que haga lo mismo si realmente quieres.
spelufo
incluso si no lo hace, deshabilitará las opciones, por lo que otros comandos también se verán afectados. Los silenciará al no pasarles ninguna opción :).
docker build
- pero a llamarse${JAVA_HOME}/bin/java
ajava2
y poner una versión modificada de este script en allíjava
(conchmod +x
). ¡Trabajado como un encanto!O puede poner esto en los archivos de inicio / perfil de su shell:
fuente
java ...
través de la línea de comando. todas las invocaciones de Java a través de secuencias de comandos u otros procesos padre no se verán afectados