抑制“Picked up _JAVA_OPTIONS”消息

fly*_*eep 15 linux java environment-variables openjdk

我正在使用 _JAVA_OPTIONS 在 RHEL 上为 Java 设置一些默认值。它工作正常,但现在每次启动 java 我都会收到以下消息

 Picked up _JAVA_OPTIONS: -foo -bar -baz
Run Code Online (Sandbox Code Playgroud)

是否可以保留选项但禁止显示此消息。

fly*_*eep 12

Java 通常使用绝对路径调用,例如/usr/bin/java,这使得这个答案在某些情况下毫无用处,并且需要更多才能使其在其他情况下工作。

我发现的那个解决方案需要编写一个包装器 shell 脚本,通过过滤器重定向 STDERR,删除有问题的行。它必须被放置在$PATH其包装,并用纯被称为Java二进制之前javawhich java或类似(或您的工具必须被配置为使用它)

它依赖于 bash 的能力来创建一个带括号的子外壳(command),并将 java 的 STDERR 重定向到它的 STDIN command1 2> >(command2)。最后,子shell中的进程需要再次将其过滤后的输入重定向到STDOUT,以便java程序仍然可以使用STDERR。

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