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二进制之前java
,which 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)