Unterdrückung der Meldung "Aufgenommene _JAVA_OPTIONS"


13

Ich verwende _JAVA_OPTIONS, um einige Standardeinstellungen für Java auf RHEL festzulegen. Es funktioniert gut, aber jetzt bekomme ich jedes Mal, wenn ich Java starte, die folgende Meldung

 Picked up _JAVA_OPTIONS: -foo -bar -baz

Ist es möglich, die Optionen beizubehalten, aber die Anzeige dieser Meldung zu unterdrücken?

Antworten:


11

Java wird oft mit absoluten Pfaden wie aufgerufen /usr/bin/java, was diese Antwort in einigen Fällen unbrauchbar macht und mehr erfordert, damit sie in anderen funktioniert.

Für diese Lösung muss ein Wrapper-Shell-Skript geschrieben werden, das STDERR durch einen Filter umleitet und die fehlerhafte Zeile entfernt. Es muss in der gesetzt werden , $PATHbevor die Java binären es Wraps und mit Klar bezeichnet werden java, which javaoder ähnlich (oder das Werkzeug so konfiguriert sein , sie zu verwenden)

Es basiert auf der Bash-Fähigkeit, eine Subshell mit Klammern zu erstellen (command)und STDERR von Java auf STDIN umzuleiten command1 2> >(command2). Schließlich muss der Prozess in der Subshell seine gefilterte Eingabe erneut an STDOUT umleiten, damit Java-Programme STDERR weiterhin verwenden können.

#!/bin/bash
/usr/bin/java "$@" 2> >(grep -v "^Picked up _JAVA_OPTIONS:" >&2)

Wahrscheinlich schreckliche Praxis, aber es ist für eine Docker Bild und ich bekam müde von all den roten während docker build- aber ich umbenannt ${JAVA_HOME}/bin/javazu java2und legte eine modifizierte Version dieses Skripts in dort als java(mit chmod +x). Lief wie am Schnürchen!
— BrainSlugs83

2

Oder Sie können dies in Ihre Shell-Start- / Profildateien einfügen:

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'

Das funktioniert nur beim direkten Aufrufen java ...über die Befehlszeile. Alle Java-Aufrufe über Skripte oder andere übergeordnete Prozesse sind davon nicht betroffen
— fliegende Schafe

Nun, Sie können / bin / java so ändern, dass es ein Shell-Skript ist, das dasselbe tut, wenn Sie es wirklich wollen.
— Spelufo

Selbst wenn Sie dies nicht tun, werden die Optionen deaktiviert, sodass auch andere Befehle betroffen sind. Es wird sie zum Schweigen bringen, indem es ihnen keine Optionen gibt :).
— Spelufo
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.