锁定老帖子 主题:Jar中Class文件搜索器
精华帖 (0) :: 良好帖 (6) :: 新手帖 (0) :: 隐藏帖 (2)
|
|
---|---|
作者 | 正文 |
发表时间:2009-08-13
最后修改:2010-03-12
现在要在众多的Jar包中,查找一个不熟悉的类名,通常只能凭经验或Google,亦或者胡乱的 将可能的Jar包一并导入,这样有时候也无法立竿见影的找到。 我自制了一个在Jar中搜索Class文件的小工具(如下图),并与大家一起分享。其中可能存 在一些Bug,请不吝指出。 修正了5楼朋友所提出的2个Bug,并在Rar包中附上了源码。 PS:其中的两个匹配方式,如查找“File”,用前者只能查到“java.io.File”,而用后者 就可以查到“java.io.FileWriter”等。 注意:这个小工具只能在“JDK1.6”以上版本运行 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-08-19
需要这样么?
你用Ctrl+Shift+T,打开Type,不就能看到某个类在哪个jar包李曼了么? 不要只用navigator,还要用一下package explorer。 呵呵。 |
|
返回顶楼 | |
发表时间:2009-08-19
最后修改:2009-08-19
用Ctrl+Shift+T,打开Type,的确是一个在现存已知的Jar中进行寻找的好办法,但是有很多情况下还是需要在未知的Jar中进行探索的。我的硬盘中至少有15~20G(应该有重复的可能)的Jar文件,有时候为了找一个适合的Jar还得凭记忆加搜索工具,所以想偷个懒,就以练练Swing开始而写的这个小工具。这若有一天也能帮到您那就太好了。
|
|
返回顶楼 | |
发表时间:2009-08-19
太吝啬了,居然封装成exe,不如用c++做了
|
|
返回顶楼 | |
发表时间:2009-08-20
最后修改:2009-08-20
做成EXE的话也是没有用的。要看源码也是很方便的。
|
|
返回顶楼 | |
发表时间:2009-08-20
楼主的程序是用exe4j打包的吧,JAR文件被我找到了。反编译看了一下,发现有两个地方存在BUG:
1,JAR的后缀名应该是大小写无关的。而楼主的代码里面只考虑到了小写的JAR文件名。 2,楼主打开JAR文件后,构造JarFile后,遍历完条目没有关闭JarFile对象,导致JarFile对象被独占,使用完后即时关闭流是一个好的习惯。 public void treeDir(File searchDir) { File rootDir = searchDir; if (!(rootDir.isDirectory())) { return; } String[] fileArr = rootDir.list(); if ((fileArr == null) || (fileArr.length == 0)) { return; } String regexStr = "^.*\\.jar$"; for (String str : fileArr) { File chargeFile = new File(searchDir + "/" + str); if (chargeFile.isDirectory()) { treeDir(chargeFile); } if ((chargeFile.isFile()) && (Pattern.matches(regexStr, str)) && (chargeFile.length() != 0L)) { this.jarFileList.add(chargeFile.getAbsolutePath()); searchClassFileNameToList(chargeFile.getAbsolutePath()); } } } public void searchClassFileNameToList(String jarFileName) { JarFile jarFile = null; try { File testFile = new File(jarFileName); if ((testFile.exists()) && (testFile.canRead()) && (testFile.canExecute())) jarFile = new JarFile(jarFileName); else this.errorFileList.add(jarFileName); } catch (IOException e) { e.printStackTrace(); } searchClassFileNameToList(jarFile); } 既然楼主不喜欢把源代码附上,那我也不太好附上代码了。我觉得如何楼主是真心想交流的话,应该直接把源码附上。 |
|
返回顶楼 | |
发表时间:2009-08-21
楼上的朋友,很感谢您的指点。关于exe,我看了一篇exe4j可以将java本地化的文章,就试用了一下,为了能让没有jvm的朋友也可以使用,之后第二天就有朋友告诉我:无法在没有jre的机器上运行,故而又添上了“这个小工具只能在“JDK1.6”以上版本运行 ”一句。
2个Bug我完全接受,谢谢!顺便说一下,第一个Bug是由于“JAR的后缀名应该是大小写有关的”吧。 |
|
返回顶楼 | |
发表时间:2009-08-21
findjar.com比你本地的jar要全的多
|
|
返回顶楼 | |
发表时间:2009-08-21
usherlight 写道 findjar.com比你本地的jar要全的多
我也经常用这个网站的,但是先在本地先找一下,若没有再上去搜岂不更好。 |
|
返回顶楼 | |
发表时间:2009-08-21
何必这么麻烦,用rar打开jar,按F3就可以搜索了
|
|
返回顶楼 | |