怎么查看jar包下java类
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,本篇内容主要讲解"怎么查看jar包下java类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么查看jar包下java类"吧!查看java类在那个jar包
千家信息网最后更新 2026年10月31日怎么查看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文件条目的枚举 Enumeration enumFiles = 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安全错误
数据库的锁怎样保障安全
互联网科技公司
广东猪兼强互联网科技有限公司
深圳九邦互联网科技有限公司
互联网电商科技
互联网为科技
北京互联网科技公司
互联网未来科技
科技创新互联网企业
互联网科技中介
宁夏众和广鑫互联网科技有限公司
青海科技产业互联网发展
民营互联网公司国防科技
互联网在线教育科技创业
四川慕妮娅互联网科技有限公司
为客找房互联网科技公司怎么样
国大互联网教育科技有限公司薪资
互联网方面的科技前沿
互联网公司高科技产品
工业互联网科技创业
深圳互联网科技园地址
广州大一互联网络科技有限公司
蓝思科技飞鸽互联网
科技赋能下的互联网金融
深圳科技互联网
互联网科技英文
互联网科技论坛
济南和联互联网科技有限公司
米聚互联网科技南京有限公司排面
互联网新科技动漫ppt素材
黑云互联网科技有限公司