例如,假设我想使用 ArrayList,所以我必须使用
import java.util.ArrayList;
在我的 java 源代码中。但是如果我忘记了 ArrayList 包含在java.util
包中。所以我如何找到AArrayList 类的包名称?
- 假设我没有网络
- 假设我不想浏览源代码
答案1
我不确定你用什么进行开发,但我正在使用IntelliJ IDEA我永远不必关心任何导入语句。我只需开始输入ArrL
,IDEA 会处理其余的事情。它会建议ArrayList<E>
自动完成并立即修复导入语句。它只知道你想做什么,你可以专注于开发,而不是记住包名称:
编辑:
在命令行中执行此操作的一种简单方法是搜索src.zip
SDK 附带的文件。因此,如果您尝试查找,ArrayList
则可以执行
7z l src.zip | grep ArrayList
你会得到
2013-03-26 21:10:27 ..... 42659 8916 java/util/concurrent/CopyOnWriteArrayList.java
2013-03-26 21:10:27 ..... 21547 5814 java/util/ArrayList.java
您可以在此处查看包结构,因为它与子文件夹类似。我确信在某些情况下这种方法行不通,但您至少可以尝试一下。
答案2
假设$JAVA_HOME
设置正确。
$ find $JAVA_HOME -name *.jar -print | xargs -n1 jar -tf | grep "ArrayList.class"
com/sun/istack/internal/FinalArrayList.class
com/sun/xml/internal/messaging/saaj/util/FinalArrayList.class
com/sun/xml/internal/org/jvnet/mimepull/FinalArrayList.class
sun/swing/BakedArrayList.class
sun/awt/util/IdentityArrayList.class
java/util/concurrent/CopyOnWriteArrayList.class
java/util/Arrays$ArrayList.class
java/util/ArrayList.class
com/sun/javafx/UnmodifiableArrayList.class
org/eclipse/equinox/internal/p2/core/helpers/CollectionUtils$UnmodifiableArrayList.class
小辅助函数,仍然假设JAVA_HOME
已设置并正确设置
function jfind ()
{
if [[ -z "$JAVA_HOME" ]]; then
echo "Please set JAVA_HOME variable";
else
find $JAVA_HOME -name *.jar -print | xargs -n1 jar -tf | grep "$@";
fi
}
更常见的解决方案
你可以JAVA_HOME
用任何所需 jar 所在的路径来替换。例如你的项目路径:
$ find some_folder_with_jars -name *.jar -print | xargs -n1 jar -tf | grep "Awesome.class"
来源
基于这回答