Suppressing the “Picked up _JAVA_OPTIONS” message

22,727

Solution 1

Java is often called with absolute paths like /usr/bin/java, which makes this answer useless in some cases, and requires more to make it work in others.

That solution I found requires writing a wrapper shell script that redirects STDERR through a filter removing the offending line. It has to be placed in the $PATH before the java binary it wraps and be called with plain java, which java or similar (or your tool has to be configured to use it)

It relies on the bash ability to create a subshell with parentheses (command), and redirect java’s STDERR to its STDIN command1 2> >(command2). Finally, the process in the subshell needs to redirect its filtered input to STDOUT again so that java programs can still use STDERR.

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

Solution 2

Or you can put this in your shell startup / profile files:

_SILENT_JAVA_OPTIONS="$_JAVA_OPTIONS"
unset _JAVA_OPTIONS
alias java='java "$_SILENT_JAVA_OPTIONS"'
Share:
22,727
flying sheep
Author by

flying sheep

Updated on September 18, 2022

Comments

  • flying sheep
    flying sheep over 1 year

    I'm using _JAVA_OPTIONS to set some defaults for Java on RHEL. It works fine but now every time I start java I get the following message

     Picked up _JAVA_OPTIONS: -foo -bar -baz
    

    is it possible to keep the options but suppress the display of this message.

  • flying sheep
    flying sheep over 8 years
    that only works when directly invoking java ... through the command line. all java invocations through scripts or other parent processes will be unaffected
  • spelufo
    spelufo over 8 years
    well, you can change /bin/java to be a shell script that does the same thing if you really want to.
  • spelufo
    spelufo over 8 years
    even if you don't it will unset the options, so other commands will be affected too. It will silence them by not passing them any options :).
  • BrainSlugs83
    BrainSlugs83 almost 5 years
    Probably terrible practice, but it's for a docker image and I got tired of all the red during docker build -- but I renamed ${JAVA_HOME}/bin/java to java2 and put a modified version of this script in there as java (with chmod +x). Worked like a charm!