执行任意Java命令时出现未知额外输出,该如何关闭?
JDK运行时出现@HotSpotIntrinsicCandidate相关警告的解决方法
这些输出是JVM的诊断警告信息,你当前使用的是第三方定制编译的OpenJDK 11版本,该版本编译时开启了固有方法候选的警告输出开关:当JVM检测到java.lang.Math类下的内置优化方法没有标注@HotSpotIntrinsicCandidate注解时,就会输出该警告,提示这些方法不会被内联优化。该警告不影响Java程序的正常运行,仅属于调试级别的提示信息。
解决方法
方法1:临时关闭(单次命令生效)
执行Java命令时额外添加关闭警告的参数即可,示例:
# 查看版本 java -XX:-ShowIntrinsicCandidateWarning -version # 运行Java文件 java -XX:-ShowIntrinsicCandidateWarning .\FutureOutput.java
方法2:全局永久关闭
通过配置JAVA_TOOL_OPTIONS环境变量,让所有Java命令自动加载关闭参数:
- Windows系统:打开「控制面板→系统→高级系统设置→环境变量」,新建系统变量,变量名填
JAVA_TOOL_OPTIONS,变量值填-XX:-ShowIntrinsicCandidateWarning,保存后重启CMD/PowerShell即可生效。 - Linux/macOS系统:编辑你当前使用shell的配置文件(如
~/.bashrc、~/.zshrc),添加如下内容:
保存后执行export JAVA_TOOL_OPTIONS="-XX:-ShowIntrinsicCandidateWarning"source ~/.bashrc(对应你修改的配置文件)即可立即生效,重启终端也会自动加载。
方法3:替换JDK版本
如果上述参数不生效,可以更换官方标准发行版的OpenJDK/Oracle JDK,官方标准版默认不会开启这类调试级别的日志输出,从根源消除冗余提示。
内容的提问来源于stack exchange,提问作者Sharad
相关产品推荐
相关产品推荐

