Suppression du message «Picked up _JAVA_OPTIONS»

13

J'utilise _JAVA_OPTIONS pour définir certains paramètres par défaut pour Java sur RHEL. Cela fonctionne bien, mais maintenant, chaque fois que je démarre java, je reçois le message suivant

 Picked up _JAVA_OPTIONS: -foo -bar -baz

est-il possible de conserver les options mais de supprimer l'affichage de ce message.

mouton volant
la source

Réponses:

11

Java est souvent appelé avec des chemins absolus comme /usr/bin/java, ce qui rend cette réponse inutile dans certains cas et nécessite plus pour le faire fonctionner dans d'autres.

Cette solution que j'ai trouvée nécessite d'écrire un script shell wrapper qui redirige STDERR via un filtre supprimant la ligne incriminée. Il doit être placé $PATHavant le binaire java qu'il encapsule et être appelé avec plain java, which javaou similaire (ou votre outil doit être configuré pour l'utiliser)

Il repose sur la capacité bash de créer un sous-shell avec des parenthèses (command)et de rediriger le STDERR de java vers son STDIN command1 2> >(command2). Enfin, le processus dans le sous-shell doit rediriger à nouveau son entrée filtrée vers STDOUT afin que les programmes java puissent toujours utiliser STDERR.

#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)
mouton volant
la source
Probablement terribles pratique, mais il est pour une image docker et je me suis fatigué de tout le rouge pendant docker build- mais je renommé ${JAVA_HOME}/bin/javapour java2et mettre une version modifiée de ce script là - dedans comme java(avec chmod +x). A fonctionné comme un charme!
BrainSlugs83
2

Ou vous pouvez mettre cela dans vos fichiers de démarrage / profil shell:

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
spelufo
la source
cela ne fonctionne que lors d'un appel direct java ...via la ligne de commande. toutes les invocations java via des scripts ou d'autres processus parents ne seront pas affectées
moutons volants
eh bien, vous pouvez changer / bin / java pour être un script shell qui fait la même chose si vous le voulez vraiment.
spelufo
même si vous ne le faites pas, cela désactive les options, donc d'autres commandes seront également affectées. Il les fera taire en ne leur passant aucune option :).
spelufo