java - 如何找到包含类定义的jar文件?

标签 java windows search class jar

是否有工具、插件或脚本可以用来在一堆 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/

相关文章:

python - 将 Python 编译为 native 代码?

c++ - 为什么我们需要在 C++ 中导出一个类?

Python Pandas 多个搜索词

Mysql - 帮助我更改此涉及多个联接和条件的搜索查询以获得所需的结果

java - 具有多个可选参数的 Spring Data MongoDB AND/OR 查询

java - 如何将字节字符串转换为字节[]

java - 如何从不同的服务器连接到 mysql 数据库?

Java图形(颜色和字体)

windows - 哪些版本的 Windows 支持/需要哪些 CPU 多媒体扩展? (如何检查 SSE 或 AVX 是否完全可用?)

php - Python 从搜索结果中抓取链接