`

在指定的路径中的Jar文件中寻找自己所需要的class

阅读更多
//功能:在指定的路径中的Jar文件中寻找自己所需要的class
//用法:提供本地磁盘路径和所需要的class的全称(包括package等信息)
//例如:Java -cp . JarClassFind Path ClassName
//eg:  Java -cp . JarClassFind F:\JDK java.applet.Applet

import java.io.File;
import java.util.Enumeration;
import java.util.jar.JarFile;

public class JarClassFind
{
	public static int	count	= 0;

	public JarClassFind()
	{
	}

	private static void findClassInLocalSystem(String path, String classname)
	{
		if ((path.charAt(path.length() - 1)) != File.separatorChar)
		{
			path += File.separatorChar;
		}
		File file = new File(path);
		if (!file.exists())
		{
			System.out.println("Error: Path not Existed! Please Check it out!");
			return;
		}
		String[] filelist = file.list();
		if (filelist != null)
		{
			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
						{
							JarFile jarfile = new JarFile(path + filelist[i]);
							for (Enumeration enumeration = jarfile.entries(); enumeration.hasMoreElements();)
							{
								String name = enumeration.nextElement().toString();
								if (name.equals(classname))
								{
									System.out.print("No." + ++JarClassFind.count);
									System.out.println("\t" + path + filelist[i]);
									// System.out.println(name);
								}
							}
							jarfile.close();
						}
						catch (Exception ex)
						{
							ex.printStackTrace();
						}
					}
				}
			}
		}
		else
		{
			System.out.println("File list is null or Permission denied, please check : " + path);
		}
	}

	public static void main(String[] args)
	{
		System.out.print("You are searching Java Class on: " + System.getProperty("os.name"));
		System.out.println("\t\tFile.separator is : " + File.separator);

		if (args.length < 2)
		{
			showHowToUsage();
			return;
		}
		String absoluteclassname = args[1].replace('.', '/') + ".class";
		System.out.println("Find class [" + args[1] + "] in Path [" + args[0] + "] Results:");
		findClassInLocalSystem(args[0], 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 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:F:\\JDK");
		System.out.println("<source class name>:\tClass to Find eg:java.applet.Applet");
	}
}
分享到:
评论
1 楼 maidini2000 2009-03-15  
   看不懂

相关推荐

    在jar包下找class文件

    当我们需要在众多`jar`包中寻找特定的`.class`文件时,这通常是一项繁琐的任务。为了简化这一过程,可以使用名为`JarSearchFile`的工具或方法来高效地定位所需文件。 `JarSearchFile`可能是一个命令行工具或者库,...

    java调用外部jar文件

    在上述代码中,我们创建了一个`CustomClassLoader`,它接受一个jar文件作为输入,然后在`findClass()`方法中遍历jar文件中的所有条目,寻找匹配的类并加载。 有了自定义类加载器,接下来就可以动态地加载和执行外部...

    解决eclipse导出的jar文件打不开问题

    在运行JAR文件时,需要确保环境变量中包含了对应的`java`命令路径,或者手动指定完整路径。 #### 结论 解决Eclipse导出的JAR文件无法打开的问题,关键在于仔细检查主类的选择、依赖库的打包方式以及文件路径的配置...

    如何在eclipse中查看.class文件的步骤

    在Java开发过程中,有时我们需要查看已编译的`.class`文件来理解代码的执行逻辑,尤其是在遇到异常或问题时,查看字节码有助于排查问题。Eclipse作为一个强大的Java集成开发环境,本身并不直接支持查看`.class`文件...

    Java 自动加载JAR文件并运行其中的类方法

    在Java编程中,有时我们需要动态地加载外部JAR文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...

    java Jar包

    JAR文件的使用在Java开发中扮演着至关重要的角色,因为它允许开发者将多个类文件打包成一个单一的可执行文件,从而方便了代码的管理和分发。 JAR包的核心特点: 1. **压缩**:JAR文件实质上是一个ZIP格式的压缩...

    通过import导入包查找所在jar包工具

    类路径可以通过`java.class.path`系统属性或者在启动Java应用时通过`-cp`或`-classpath`选项指定。 4. **匹配JAR文件**:对于每个JAR文件,工具会打开它,读取MANIFEST.MF文件(如果存在)以及每个包含类的`.class`...

    Java路径问题

    - 在jar文件中,类的路径由`package/ClassName.class`格式表示,例如`com/example/MyClass.class`。 - `java.util.jar.JarFile`类用于读取和操作jar文件,可以获取jar内的条目及其路径。 - 运行jar文件时,可以...

    fatjar插件安装方法及jar包

    在Java开发中,常常需要将多个类和库合并成一个可执行的JAR文件,以便于分发和运行。这时,fatjar插件就显得尤为重要。fatjar,全称为“fat JAR”,指的是包含所有依赖库的大型JAR文件,使得用户无需额外安装依赖就...

    java 2 jar

    在Java开发中,JAR文件是一个集合,它包含类文件、相关的元数据和其他资源,使得它们可以作为一个单一的可分发单元。JAR文件的主要用途包括:减少网络传输的数据量、提高加载速度、实现代码封装和版本控制等。 **1....

    jar包中类的加载及jar中资源的使用

    在Java编程环境中,`jar`(Java Archive)文件是一种打包工具,它将多个类文件、资源文件以及其他元数据集合在一起,便于分发和执行。本文将深入探讨`jar`包中类的加载机制以及如何在Java程序中使用`jar`中的资源。 ...

    java语言开发jar包_jar包_java_

    5. **类路径管理**:在Java命令行中,可以使用 `-classpath` 或 `-cp` 参数指定JAR包的位置,使得JVM知道在哪里寻找所需的类。 6. **运行时合并**:通过`-jar`选项,可以指定主类并直接运行JAR文件,如`java -jar ...

    java解压jar类查找工具

    Java解压和jar类查找工具是一种实用的开发辅助软件,尤其在处理大量jar包和zip文件时,能够高效地定位到所需的class文件。这个工具基于Java编程语言开发,支持在Linux和Windows操作系统环境下运行,其核心功能是通过...

    java的编译路径与运行路径

    当执行`java`命令时,JVM会遍历类路径中的所有目录和JAR文件来寻找所需的类。 在直接运行一个类(如`java HelloWorld`)时,JVM会从当前目录(".")开始查找对应的类文件。如果类有包,JVM会根据包结构在相应目录下...

    微信支付52个jar包

    jar文件是Java平台特有的归档格式,它将多个类文件和其他资源打包在一起,方便在Java应用程序中分发和使用。在Java项目中,尤其是服务器端应用,jar包是代码复用和模块化的重要手段。 对于这52个jar包的寻找过程,...

    jar包冲突检测工具.zip

    它的工作原理可能是通过遍历指定路径下的所有jar文件,然后对比每个jar中的类文件,找出具有相同全限定名(即包括包名和类名)但内容不同的类,从而确定冲突的存在。 `CallJars.exe` 可能是该工具的执行文件,它是...

    java打包jar.pdf

    然而,为了更有效地管理和运行JAR文件,我们需要自定义MANIFEST.MF文件,特别是添加`Main-Class`属性,这指定了JAR文件中的主类,使得通过`java -jar`命令就能直接启动应用程序。 创建和编辑MANIFEST.MF文件可以...

    jar包-8.0以及8.0以下版本.zip

    这可能意味着寻找替代的JAR文件、查阅相关文档,或者在社区论坛上寻求帮助。确保查看开发者文档、官方API指南或者开源项目的GitHub页面来获取更多信息。 6. **MANIFEST.MF**:在导入和使用JAR包时,MANIFEST.MF文件...

    eclipse插件(查看java、class文件)

    手动安装则需要下载插件的.jar文件,然后通过Eclipse的"Help" &gt; "Install New Software" &gt; "Add" &gt; "Archive"来添加并安装。 5. **插件的配置与使用** 安装完成后,通常需要重启Eclipse以使插件生效。对于查看类...

    classfinder

    在Java开发中,类路径(Classpath)是一个至关重要的概念,它是Java虚拟机(JVM)寻找类文件的路径。当遇到大型项目或者模块化工程时,类路径问题可能会变得复杂,导致运行时找不到所需的类。"ClassFinder"工具正是...

Global site tag (gtag.js) - Google Analytics