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?
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 :).
docker build
- aber ich umbenannt${JAVA_HOME}/bin/java
zujava2
und legte eine modifizierte Version dieses Skripts in dort alsjava
(mitchmod +x
). Lief wie am Schnürchen!Oder Sie können dies in Ihre Shell-Start- / Profildateien einfügen:
quelle
java ...
über die Befehlszeile. Alle Java-Aufrufe über Skripte oder andere übergeordnete Prozesse sind davon nicht betroffen