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.

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)

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"'

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.