怎么查看jar包下java类
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,本篇内容主要讲解"怎么查看jar包下java类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么查看jar包下java类"吧!查看java类在那个jar包
千家信息网最后更新 2025年01月26日怎么查看jar包下java类
本篇内容主要讲解"怎么查看jar包下java类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么查看jar包下java类"吧!
查看java类在那个jar包
java添加classpath
linux示例:添加 -classpath xxx/xxx.jar:xxx/xxx.jar如果是windows用;分割,如果是mac和linux用:分割
java编译
javac -d . xxx.java点代表当前目录如果没报名可以不加-d . 示例 javac -d . Test.java
运行
java com.dxz.chama.javaagent.asm.Test 如果添加class资源运行 java -classpath xxx/xxx.jar:xxx/xxx.jar com.dxz.chama.javaagent.asm.Test
package com.dxz.chama.javaagent.asm;import java.net.URL;/** * description: 查找某个类在那个jar包下 * * @author: he QQ: 905845006 * @email: 905845006@qq.com * @date: 2020/8/15 5:39 PM */public class Test { public static void main(String args[]) { Class targetclass = String.class; String className = targetclass.getName(); className= "sun.net.www.protocol.http.HttpURLConnection"; className = className.replace('.', '/'); String resource = "/" + className + ".class"; URL url = targetclass.getResource(resource); System.out.println(url.getFile()); // 输出结果: // file:/Library/Java/JavaVirtualMachines/jdk1.8.0_211.jdk/Contents/Home/jre/lib/rt.jar!/sun/net/www/protocol/http/HttpURLConnection.class }}
查看jar包下java类
package com.dxz.chama.javaagent.asm;/** * description: * * @author: he QQ: 905845006 * @email: 905845006@qq.com * @date: 2020/8/15 3:11 PM */import java.io.File;import java.io.IOException;import java.lang.reflect.Method;import java.net.URL;import java.net.URLClassLoader;import java.util.Enumeration;import java.util.jar.JarEntry;import java.util.jar.JarFile;public class jarTest { public static void getJarName(String jarFile) throws Exception { getJarName(jarFile,null); } public static void getJarName(String jarFile, String clazz) throws Exception { try { //通过将给定路径名字符串转换为抽象路径名来创建一个新File实例 File f = new File(jarFile); URL url1 = f.toURI().toURL(); URLClassLoader myClassLoader = new URLClassLoader(new URL[]{url1}, Thread.currentThread().getContextClassLoader()); //通过jarFile和JarEntry得到所有的类 JarFile jar = new JarFile(jarFile); //返回zip文件条目的枚举 EnumerationenumFiles = jar.entries(); JarEntry entry; System.out.println(enumFiles); //测试此枚举是否包含更多的元素 while (enumFiles.hasMoreElements()) { entry = (JarEntry) enumFiles.nextElement(); if (entry.getName().indexOf("META-INF") < 0) { String classFullName = entry.getName(); if (!classFullName.endsWith(".class")) { classFullName = classFullName.substring(0, classFullName.length() - 1); } else { //去掉后缀.class String className = classFullName.substring(0, classFullName.length() - 6).replace("/", "."); if (className.equals("module-info")) { System.out.println("is jdk9 continue"); continue; } //如果传入指定类 只查看指定类 if (clazz != null && !className.equals(clazz)) { continue; } System.out.println("className:"+className); Class> myclass = myClassLoader.loadClass(className); //打印类名 System.out.println("*****************************"); System.out.println("全类名:" + className); //得到类中包含的属性 Method[] methods = myclass.getMethods(); for (Method method : methods) { String methodName = method.getName(); System.out.println("方法名称:" + methodName); Class>[] parameterTypes = method.getParameterTypes(); for (Class> clas : parameterTypes) { // String parameterName = clas.getName(); String parameterName = clas.getSimpleName(); System.out.println("参数类型:" + parameterName); } System.out.println("=========================="); } } } } } catch (IOException e) { e.printStackTrace(); } } /** * 这些默认方法不打印 */ private static String DEFAULT_METHOD = "waitequalsnotifynotifyAlltoStringhashCodegetClass"; //必须传1个参数,指定的jar包,如果传2个参数,第一个为jar包,第二个为需要找的类 public static void main(String[] args) throws Exception { //jar包所在路径 /*getJarName("F:\\user.jar"); getJarName("F:\\role1.jar"); getJarName("F:\\role2.jar"); */ //getJarName("F:\\UserInfo.jar"); String jarz = null; String clazz = null; if(args.length>1){ jarz = args[0]; clazz = args[1]; }else{ jarz = args[0]; } if (jarz != null) { getJarName(jarz); } //org.apache.tools.ant.util.ResourceUtils$ResourceSelectorProvider if (jarz != null && clazz != null) { System.out.println("示例类格式:org.apache.tools.ant.util.ResourceUtils$ResourceSelectorProvider"); getJarName(jarz, clazz); } //测试// getJarName("/Users/heliming/IdeaProjects/bugokhttp/asm6/target/asm6-1.0-SNAPSHOT.jar"); }}
补充:
ClassNotFoundException解释:
当应用程序运行的过程中尝试使用类加载器去加载Class文件的时候,如果没有在classpath中查找到指定的类,就会抛出ClassNotFoundException。一般情况下,当我们使用Class.forName()或者ClassLoader.loadClass以及使用ClassLoader.findSystemClass()在运行时加载类的时候,如果类没有被找到,那么就会导致JVM抛出ClassNotFoundException。
NoClassDefFoundError解释:
当JVM在加载一个类的时候,如果这个类在编译时是可用的,但是在运行时找不到这个类的定义的时候,JVM就会抛出一个NoClassDefFoundError错误。比如当我们在new一个类的实例的时候,如果在运行是类找不到,则会抛出一个NoClassDefFoundError的错误。
到此,相信大家对"怎么查看jar包下java类"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
运行
时候
参数
方法
示例
路径
内容
实例
文件
更多
类名
路径名
错误
学习
测试
编译
解释
实用
更深
代表
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
无锡app软件开发报价
软件开发专业学校排名前列有哪家
金蝶不在服务器上备份可以吗
多源端数据库
oracle删除数据库实例
服务器配置存储用什么软件
sybase导入数据库表
怎么提高wifi网络安全
违背网络安全的案例
老头环与服务器断开连接
奉贤区创新软件开发报价行情
怎么做好软件开发经理
武汉软件开发报价
邯郸市盛邦软件开发公司
贵阳大学有网络安全专业吗
华为的软件开发工资
山西定制网络技术服务计划表
公安部网络安全目录
关联同源分析网络安全中标
如何让服务器的玩家说不了话
数据库属于哪一类文献
河南天泽信息网络技术有限公司
金昌软件开发者
加强网络安全防护工作有哪些要点
网络安全 身份验证
ps4链接服务器连不上
上海散射网络技术优势
在线客服软件开发
各种提高说话水平的软件开发
打印服务器属性中表单无法使用