给定一个目录,我如何找出一个类的位置

时间:2012-02-14 19:15:13

标签: java jar

考虑到我有一个装满了罐子的目录。是否有一个java命令,我可以在命令提示符中输入,它会告诉我哪些罐可以加载一个类?

5 个答案:

答案 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