目录下查找包含特定名称(如:类名称)的Jar包
上代码:
比如要查找含有类 “org/apache/avro/Schema” 的:
# 方法一
# 此方法只能查找到内容(比如:类名称)。但是不能打印jar名称
find . -name "*.jar"|awk '{print "jar -tvf "$1}' | sh | grep "org/apache/avro/Schema"
# 方法二
# 此方法只能查找到内容(比如:类名称)。但是不能打印jar名称
find . -name "*.jar" -exec jar -tf {} \; | grep avro
# 方法三
# 此方法通过删除参数 -q (quiet) 可以 选择是否打印实际找到内容(比如:类名称)
find . -name '*.jar' | while read jarfile; do if jar tf "$jarfile" | grep org/apache/avro/Schema -q; then echo "$jarfile"; fi; done
java启动打印类加载状态
# 只需要加入-verbose:class选项即可
# 比如:
java -verbose:class -classpath your.jar your.class
参考文章:
Java - java.lang.NoSuchMethodError: xxx 错误详解 文章介绍了-verbose:class使用方法。
ClassLoader—观察程序运行时类加载的过程-verbose:class 文章介绍了-verbose:class使用方法。
解析java字节码 NoSuchMethodError等 对应的参数列表类型可以参考此文章。