怎么查看jar包下java类
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本篇内容主要讲解"怎么查看jar包下java类",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么查看jar包下java类"吧!查看java类在那个jar包
千家信息网最后更新 2025年12月03日怎么查看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安全错误
数据库的锁怎样保障安全
2005数据库945
湖南IOS软件开发
数据库系统是由几部分组成
软件开发与工程哪个好就业
卡卡科技网络技术有限公司
软件开发公司的简介
家居互联网科技视频
大邑县网络安全
电子表格替换相同数据库
信息技术会考新建空数据库
arma3服务器管理员指令
索尼电视 投屏 无法访问服务器
oracle数据库连接
网络安全管理与评估比赛答案
数据库创建地址怎么看
sql数据库折线图制作
手机网络安全软件排名
数据库报错00904
服务器内存和普通内存有多大
旧版英雄联盟服务器
指控系统网络安全
数据库系统是由几部分组成
赤峰检察机关网络安全
畅游网络技术有限公司旗下游戏
阿里巴巴第一网络安全
数据库操作定义
外包手机软件开发
互联网科技成果转化项目申请
专科生备考数据库
超星多媒体与网络技术