是否有工具、插件或脚本可以用来在一堆 jar 文件中查找 java 类?
我经常继承提示不存在的类的代码,这只是因为 jar 文件未包含在类路径中。但是,类在什么 jar 文件中?我可能没有 JAR(所以我必须在线搜索),或者将 JAR 添加到类路径可能会产生重复的类定义问题。
我显然更喜欢 Eclipse 插件,但我愿意接受任何适用于 Windows 的软件。
我知道...Windows 不是我的选择,但这就是我必须使用的。
谢谢!
路易斯
附:谢谢您的回答。在查看了一些回复后,我意识到我应该更好地解释我的场景。我们有一个下载或创建的 JAR 文件库,但有时类(class)会在某个地方在线。
最佳答案
(这是对我在以前版本的答案中的脚本的改进,因为它以一些 awk
特殊/丑陋的引用为代价产生了更清晰的输出。)
我已经构建了一个脚本(findinjars
),它就是这样做的。
#!/usr/bin/env bash
if [[ ($# -ne 1) && ($# -ne 2) ]]
then
echo "usage is $0 <grep pattern to look for in 'jar tvf' output> [<top-of-dir-tree> or, if missing, current dir]"
else
THING_TO_LOOKFOR="$1"
DIR=${2:-.}
if [ ! -d $DIR ]; then
echo "directory [$DIR] does not exist";
exit 1;
fi
find "$DIR" -iname \*.jar | while read f ; do (jar tf $f | awk '{print "'"$f"'" " " $0}' | grep -i "$THING_TO_LOOKFOR") ; done
fi
然后你可以调用它:
$findinjars a.b.c.d.Class [directoryTreeRoot or, if missing, current dir]
或者只是
$findinjars partOfClassName [directoryTreeRoot or, if missing, current dir]
完全限定类名中的点字符将被解释为“任何字符”的正则表达式,但这没什么大不了的,因为这是一个启发式实用程序(这就是为什么它也不区分大小写 BTW)。通常我不关心完整的类名,只输入其中的一部分。
关于java - 如何找到包含类定义的jar文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497664/