开发web应用时,有时更新了类却没有生效,其实是因为jboss/tomcat中其他发布包下有同名类(包括全路径都相同)。

于是萌发了做个程序来检查指定目录是否存在重复类(通过asm从类文件中取类的全路径),扩展开来,还支持查找重复的文件(按文件md5进行比较),重复的jar文件。

主要代码如下:

简单测试代码:

package cn.jerryhouse.util.dup_files.test;
import java.io.File;
import org.junit.Test;
import cn.jerryhouse.util.dup_files.ClassDupFinder;
import cn.jerryhouse.util.dup_files.FileDupFinder;
import cn.jerryhouse.util.dup_files.JarFileDupFinder;
public class DupTest {
@Test
public void testJarFiles() {
try {
File[] files = new File[1];
files[0] = new File("E:\\workspace\\yinxing");
JarFileDupFinder dupFinder = new JarFileDupFinder();
dupFinder.iterDirs(files);
dupFinder.analyseResult();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testFileDup() {
try {
File[] files = new File[1];
files[0] = new File("E:\\workspace\\yinxing");
FileDupFinder classDupFinder = new FileDupFinder();
classDupFinder.iterDirs(files);
classDupFinder.analyseResult();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
public void testClassDup() {
try {
File[] files = new File[1];
files[0] = new File("E:\\workspace\\yinxing");
ClassDupFinder classDupFinder = new ClassDupFinder();
classDupFinder.iterDirs(files);
classDupFinder.analyseResult();
} catch (Exception e) {
e.printStackTrace();
}
}
}

注:依赖jar包asm.jar。