前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >在指定的路径中的Jar文件中寻找自己所需要的class 博客分类: JavaWebSphereMacIBM JavaJDKJarClass

在指定的路径中的Jar文件中寻找自己所需要的class 博客分类: JavaWebSphereMacIBM JavaJDKJarClass

作者头像
阿敏总司令
发布于 2019-02-28 03:42:49
发布于 2019-02-28 03:42:49
1K00
代码可运行
举报
文章被收录于专栏:简单就是美!简单就是美!
运行总次数:0
代码可运行

阅读更多

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//功能:在指定的路径中的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");
	}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2005-11-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
显示出Jar文件中的所有目录名和文件名,也显示Manifest.mf文件所有属性 JavaJDKF#
//功能:显示出Jar文件中的所有目录名和文件名,同时也显示META-INF/Manifest.mf文件中的所有属性 //用法:提供Jar文件的路径信息 //例如:Java -cp . JarFileView JarFilePath //eg:  Java -cp . JarFileView F:\JDK\1.4.2\lib\tools.jar
阿敏总司令
2019/02/28
1.6K0
统计java代码行数和jar包中*.class代码的行数
2:统计指定目录下所有的*.jar 包中*.class 文件的代码行数,文件为 JarTotal.java(可单独运行)
全栈程序员站长
2022/07/19
1.4K0
记一次实战中解密JVMTI加密过的jar包
在审一套Java系统的时候,发现其核心代码都被加密了看不到,这篇文章来介绍总结一下解密jar包的思路。
亿人安全
2024/09/11
3620
记一次实战中解密JVMTI加密过的jar包
java-解决jar包反射获取不到类
在开发一个基础工具包给业务组的小伙伴们使用的时候,发现一个小问题,就是在反射的时候在自己电脑上运行的正常,但是打成jar包后,就class not fuond,有点奇怪。 如果能借助Spring这个都不是事,关键是不能用。
潇洒
2023/10/20
7300
夯实Java基础系列20:从IDE的实现原理聊起,谈谈那些年我们用过的Java命令
本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看
Java技术江湖
2019/10/08
1.6K0
Java基础14:离开IDE,使用java和javac构建项目
这是一位阿里 Java 工程师的技术小站,作者黄小斜,专注 Java 相关技术:SSM、SpringBoot、MySQL、分布式、中间件、集群、Linux、网络、多线程,偶尔讲点Docker、ELK,同时也分享技术干货和学习经验,致力于Java全栈开发!(关注公众号后回复”资料“即可领取 3T 免费技术学习资源以及我我原创的程序员校招指南、Java学习指南等资源)
程序员黄小斜
2019/04/07
1.6K0
类加载器的双亲委托模式
遵照之前解析反射 中,我们说到类的加载器ClassLoader在对类进行加载的时候,默认会使用双亲委托模式。系统会判断当前类是否已经被加载,如果已经被加载,就会直接返回可用的类,否则就会尝试加载,在尝试加载时,会先请求双亲处理,如果双亲请求失败,则会自己加载。
算法之名
2020/05/26
8400
ClassLoader的原理及应用
我们都知道Java是跨平台的,是因为不同平台下的JVM能将字节码文件解释为本地机器指令,JVM是怎么加载字节码文件的?答案就是ClassLoader,先来打印看一下ClassLoader对象
Java识堂
2019/08/13
5090
【ClassLoader】实现自定义类加载器加载指定路径下的Class文件和Jar包[通俗易懂]
在web开发中,一般我们是不需要去自己实现类加载器的,常见的web容器已经帮我们实现了指定路径下的加载,比如我们熟悉的tomcat容器,关于tomcat类加载机制可以阅读博主的这篇文章: Java类加载机制和Tmcat模型
全栈程序员站长
2022/10/04
1.6K0
用Java实现JVM第二章《搜索class文件》
Notepad++ 打开HelloWorld.class,在'插件'工具中选HEX-Editor设置为View in Hex 默认为8-bit
小傅哥
2020/01/17
4670
用Java实现JVM第二章《搜索class文件》
获取当前jar包路径_java获取jar文件
获取classpath的路径,若没有其他依赖,在cmd下运行该可执行jar包,则该值即为该jar包的绝对路径。代码如下:
全栈程序员站长
2022/11/10
7.5K0
获取实体类@注解信息_jquery获取class名称
实体类打上@JsonSerialize注解 有一些表的主键是雪花生成的比较长,返回前端会出现精度损失,转成字符串返回就可以了 @JsonSerialize(using = ToStringSerializer.class)
全栈程序员站长
2022/11/16
2.2K0
Applet 数字签名技术完全攻略
     这里说声对不起大家。毕竟2几年前,我想写这篇文章,但因为他才懒得一直没有写。同时也给自己的东西好。前些日子我老大让我又搞这个东西发现我曾经的资料没留,又凭着自己印象从新来过。但发现网上写的东西真的有些肤浅,实在说只是去。毕竟我们是程序猿,不是学生了,怎么也点多想些东西哦,于是将自己总结的东西写下来,留给刚開始学习的人一些启发好了。通过学习一下内容您将具备通过server全然訪问本地client的能力。不在受不论什么权限的困扰,(非常多文章都写须要改 client本地的策略文件。事实上根本不是必需,仅仅要client点了俺们的数字签名,俺们可就什么都能干了) ~oo~    
全栈程序员站长
2022/07/14
1.1K0
听说你java项目可以运行?打包成 jar后路径找不到问题的完美解决方案
加载本地包下的文件和打包成jar文件的路径是不一样的,需要对路径进行调整。 如果要判断为本地文件还是jar包文件可以参考以下代码 String protocol = Aviator.class.getResource("").getProtocol(); if ("jar".equals(protocol)) { //jar包加载 findClassJar(packageName); } else { //本地加
gfu
2019/08/28
4.8K0
如何实现自己的ClassLoader
我们自己实现一个ClassLoader,并指定这个ClassLoader的加载路径可以通过如下方式来实现;
MickyInvQ
2020/09/27
1.4K0
java本地增量打包工具
在打增量包每次都需要将class文件、jsp文件等拷贝到增量包中比较麻烦。所以就写了一个增量打包工具。
一笠风雨任生平
2019/08/02
1.6K0
Java Class冲突定位思路
JAVA的父类委托加载机制,再带来巨大便利性和效率提升的同时的同时也带来不少麻烦,最直接的就是类冲突造成的问题,以下场景不知道诸位是不是有点熟悉。
wangning
2022/06/13
8180
Java Class冲突定位思路
如何使用动态编译
或许大部分人工作至今都没有使用过 Java 的动态编译功能,当然我也是在机缘巧合之下才有机会去研究使用。
政采云前端团队
2023/09/01
2840
如何使用动态编译
Java 反编译工具的使用与对比分析
Java 反编译,一听可能觉得高深莫测,其实反编译并不是什么特别高级的操作,Java 对于 Class 字节码文件的生成有着严格的要求,如果你非常熟悉 Java 虚拟机规范,了解 Class 字节码文件中一些字节的作用,那么理解反编译的原理并不是什么问题。甚至像下面这样的 Class 文件你都能看懂一二。
未读代码
2021/06/21
2.1K0
Java 反编译工具的使用与对比分析
请求HTTPS接口提示缺少安全证书:unable to find valid certification path to requested target
Question:unable to find valid certification path to requested target
chenchenchen
2021/09/06
9.2K0
推荐阅读
相关推荐
显示出Jar文件中的所有目录名和文件名,也显示Manifest.mf文件所有属性 JavaJDKF#
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文