java如何在项目依赖的jar包中查找冲突的类

原文:java如何在项目依赖的jar包中查找冲突的类

源代码下载地址:http://www.zuidaima.com/share/1785617759915008.htm

package com.whaty.util;

import java.util.*;
import java.io.*;

public class JarClassFind {
	public static int count = 0;

	static public void main(String[] args) {
		/*
		 * if (args.length < 2) { showHowToUsage(); return; }
		 */
		String className = "StringUtil"; // 要查询的class,要带包名的类名
		String libPath = "E:\\work\\workspace\\jngl_mysql\\WebRoot\\WEB-INF\\lib\\"; // 所要查找的JAR包的目录

		String absoluteclassname = className.replace(‘.‘, ‘/‘) + ".class";

		System.out.println("Find class [" + className + "] in Path [" + libPath + "] Results:");
		FindClassInLocalSystem(libPath, absoluteclassname);
		if (JarClassFind.count == 0) {
			System.out.println("Error:Can‘t Find Such Jar File!");
		}
		System.out.println("Find Process Ended! Total Results:" + JarClassFind.count);
	}

	private static void FindClassInLocalSystem(String path, String classname) {
		if (path.charAt(path.length() - 1) != ‘\\‘) {
			path += ‘\\‘;
		}
		File file = new File(path);
		if (!file.exists()) {
			System.out.println("Error: Path not Existed! Please Check it out!");
			return;
		}
		String[] filelist = file.list();
		for (int i = 0; i < filelist.length; i++) {
			File temp = new File(path + filelist[i]);
			if ((temp.isDirectory() && !temp.isHidden() && temp.exists())) {
				FindClassInLocalSystem(path + filelist[i], classname);
			} else {
				if (filelist[i].endsWith("jar")) {
					try {
						java.util.jar.JarFile jarfile = new java.util.jar.JarFile(path + filelist[i]);
						for (Enumeration e = jarfile.entries(); e.hasMoreElements();) {
							String name = e.nextElement().toString();
							if (name.equals(classname) || name.indexOf(classname) > -1) {
								System.out.println("No." + ++JarClassFind.count);
								System.out.println("Jar Package:" + path + filelist[i]);
								System.out.println(name);
							}
						}
					} catch (Exception eee) {
					}
				}
			}
		}
	}

	public static void showHowToUsage() {
		System.out.println("Usage: Java -cp. JarClassFind <source path> <source class name>");
		System.out.println("Usage: Java -classpath. JarClassFind <source path> <source class name>");
		System.out.println("");
		System.out.println("<source path>:\t\tPath to Find eg:D:\\Jbuilder");
		System.out.println("<source class name>:\tClass to Find eg:java.applet.Applet");
	}
}

效果如下图:

由最代码官方编辑于2014-7-3 23:41:12

时间: 2024-08-07 12:10:22

java如何在项目依赖的jar包中查找冲突的类的相关文章

eclipse maven 导出项目依赖的jar包

一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: 1.  mvn dependency:copy-dependencies 或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入dependency:copy-dependencies后,点击运行 maven项目所依赖的jar包会导出到targed/depen

maven导出项目依赖的jar包

在进行项目部署时,需要将maven项目所依赖的jar导出到指定目录,本文讲解如何导出项目依赖的jar包 一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: ? 1 mvn dependency:copy-dependencies 或在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入  dependency:c

【JAVA】使用Eclipse依赖生成jar包时,避免最外层同时生成资源文件的配置。

使用Eclipse依赖生成jar包时,如果做配置,生成的jar包文件会全部生成在外面,这并不是我们需要的,下面我们一起来修改下配置,使生成的jar包符合我们的需求吧. 1.如果不做任何配置生成的jar包如下. 这样最原始的生成方式并不是我们想要的,我们想要的是test.properties和ums.properties文件同时放到message文件夹里面,下面修改一下Eclipse配置. 2.修改Eclipse配置,使test.properties和ums.properties文件同时放到mes

判断一个类到底是从哪个jar包中调用的工具类

项目中使用的jar包较多时,会出现jar冲突的情况,有时候很难判断当前使用的这个类是从哪个jar包中调用的.因为一般我们只能看到jar包的名称,不清楚其中的类的目录结构. 这个类的作用就是说明当前调用的类来自于哪个jar包. import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.security.CodeSource; import java.security.Pr

maven项目,去除jar包中的不想要的依赖关系(Document root element &quot;beans&quot;, must match DOCTYPE root &quot;null&quot;. )

maven dependencies中并不会删除 以下方法maven dependencies中并不会删除,可能程序引入的时候,会去掉这种依赖(猜的) 解释: 就是说项目中要用到某一个a.jar包,通过maven引入了之后,也自动的导入了该jar包所依赖的包,这里就会存在一个问题, 如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有b.jar这个项目2.0的版本了,这里就会造成冲突,解决的办 法是去除a.jar包依赖b.jar这个项目的1.0版本的依赖关系,让项目使用我已有

maven项目,去除jar包中的不想要的依赖关系

解释:就是说项目中要用到某一个a.jar包,通过maven引入了之后,也自动的导入了该jar包所依赖的包,这里就会存在一个问题,如果a.jar包依赖b.jar这个项目的1.0版本,可是我的项目中已经有b.jar这个项目2.0的版本了,这里就会造成冲突,解决的办法是去除a.jar包依赖b.jar这个项目的1.0版本的依赖关系,让项目使用我已有的包. 最近搭一个springmvc4.x的maven环境,由于要用到webserice,打算整合jersey做,在导入jersey-spring.jar时出

selenium2+webdriver+java项目依赖的jar包

1.selenium-java-2.45.0.jar 2.selenium-java-2.45.0-srcs.jar 3.selenium-server-standalone-2.45.0.jar 说明: Selenium Server是指使用jdk来运行这个selenium-server-standalone-2.22.0.jar这个jar文件(java -jar /selenium-server-standalone-2.22.0.jar).它是一个http的服务,默认在端口号4444侦听.

eclipse导出maven依赖的jar包

一.导出到默认目录 targed/dependency 1.从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: mvn dependency:copy-dependencies 2.在eclipse中,选择项目的pom.xml文件,点击右键菜单中的Run As,见下图红框中,在弹出的Configuration窗口中,输入 dependency:copy-dependencies后,点击运行 二.导出到自定义目录中 在maven项目下创建lib文件夹,输

maven打包分离依赖的jar包和静态资源

原文:https://blog.csdn.net/jbfx455l/article/details/94382770 xml <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="htt