首页 > 代码库 > java查找重复类/jar包/普通文件

java查找重复类/jar包/普通文件

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

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

主要代码如下:

<script src="https://code.csdn.net/snippets/403628.js" type="text/javascript"></script>

简单测试代码:

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。