考虑到我有一个装满了罐子的目录。是否有一个java命令,我可以在命令提示符中输入,它会告诉我哪些罐可以加载一个类?
答案 0 :(得分:2)
“Java命令”(无论它们是什么)通常不会在命令行中输入。不过你可以试试一个简单的grep:
# grep 'my.super.cool.Stuff' *.jar
理论上,需要对点进行转义以防止它们匹配任何字符,但这通常会让您知道某个类的位置。
答案 1 :(得分:1)
有一个应用程序,FindClass可以提供干净的输出。他们也有来源,他们可能正在通过罐子。
答案 2 :(得分:0)
在Sourceforge上查看“Swiss File Knife”(http://sourceforge.net/projects/swissfileknife/)。要搜索一些名为QueryParameter的类,请使用
>sfk larc -dir "*.jar" +filter -+QueryParameter
gwt\gwt-dev.jar\\org\apache\xalan\lib\sql\QueryParameter.class
在双反斜杠之前提到了JAR文件,JAR中的路径就在此之后。
一旦习惯了SFK的紧凑语法,你就会将它用于很多很多事情。 grep,find等的优秀伴侣。
答案 3 :(得分:0)
如果您想知道何时何地将类加载到JVM 运行时,您可以使用“java”命令中的-verbose:class
选项。
答案 4 :(得分:0)
可能是这样的:
<强> findclass.sh 强>
#!/bin/sh
if [ 2 != $# ] ; then
echo "Usage: $0 directory class"
exit 1
fi
for i in $1/*.jar; do
if unzip -l $i | grep -q "$2.class"; then
echo "Found $2 in $i"
fi
done