You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lambda函数JVM加载类查询及-verbose:class输出异常咨询

问题原因与解决方案

嘿,这个问题我刚好踩过坑!原因其实是Java 9及以后版本重构了JVM日志系统,-verbose:class的输出格式彻底变了,不再使用旧版里的Loaded关键词,所以你用grep Loaded自然抓不到内容。

具体原因

在Java 8及更早版本中,-verbose:class的输出是这样的:

Loaded java.text.Format from /path/to/jar

但从Java 9引入模块化系统(Jigsaw)开始,JVM把-verbose系列参数(class/gc/jni)映射到了新的统一日志标签体系上。-verbose:class对应的是class,load日志标签,输出格式变成了你看到的:

[0.179s][info][class,load] java.text.Format source: jrt:/java.base

这种格式里根本没有“Loaded”这个字符串,所以你的grep命令匹配不到。你的Java版本是11.0.2,正好属于Java 9之后的版本,所以会遇到这个问题。

解决办法

给你两个实用的方案:

  • 方案1:适配新格式过滤
    直接过滤日志标签class,load就行,命令改成:

    java -cp my.jar -verbose:class Handler | grep "class,load"
    

    这样就能精准抓到所有类加载的日志行。

  • 方案2:强制回到旧版输出格式
    Java 9+提供了专门的参数可以切换回旧版的Loaded格式输出,用-Xlog参数替代-verbose:class:

    java -cp my.jar -Xlog:class+load=info:stdout:format=verbose Handler | grep Loaded
    

    这个命令会让输出变回类似旧版的Loaded java.text.Format from jrt:/java.base,这样你原来的grep逻辑就能正常工作了。

内容的提问来源于stack exchange,提问作者CC.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:20:38