当前位置: 首页 > news >正文

PHP+MySQL网站开发全程实例北京专业制作网站公司

PHP+MySQL网站开发全程实例,北京专业制作网站公司,电商网站项目建设,视频模板目录 问题 类加载器 获取外部 jar 包中的类以及方法 调用外部 jar 包中的方法 问题 工作中遇到一个需求#xff0c;客户端将第三方的 jar 包上传到服务器中#xff0c;系统需要解析出上传的 jar 中所有类以及类下的方法#xff08;方法名#xff0c;方法输入参数类型客户端将第三方的 jar 包上传到服务器中系统需要解析出上传的 jar 中所有类以及类下的方法方法名方法输入参数类型方法返回值类型并将这些类以及方法提供给配置人员选择由配置人员自由配置需要用到的方法。 类加载器 Java 虚拟机在加载类文件时默认情况下使用自带的三个类加载器 BootstrapClassLoader加载 %JRE_HOME%\jre\lib 下的 jar 和 classExtentionClassLoader加载 %JRE_HOME%\jre\lib\ext 下的 jar 和 classAppClassLoader加载当前应用路径下的 class 在 JDK 1.8 的 rt.jar 中Launcher 类里定义了这三个类加载器 可以从源码中看到三个加载器分别指定了不同的加载路径来加载类 BootstrapClassLoader private static String bootClassPath System.getProperty(sun.boot.class.path);ExtentionClassLoader System.getProperty(java.class.path) AppClassLoader System.getProperty(java.ext.dirs) 三个加载器通过双亲委派机制来加载类文件每个加载器都只负责加载自己负责的加载路径显然如果要自定义加载路径从而实现加载外部 jar 包就必须自定义加载器来实现。 在 JDK 1.8 中可以看到 AppClassLoader 和 ExtClassLoader 都是继承 URLClassLoader 来实现的。若要加载外部的 jar 包只需拿到外部 jar 包的 URL 路径用 URLClassLoader 便可以加载。 获取外部 jar 包中的类以及方法 public class JarUtils {/*** 这些默认方法不打印*/private static ListString DEFAULT_METHODS Arrays.asList(wait, equals, notify, notifyAll, toString, hashCode , getClass);public static void parseJar(File file) throws Exception {URL url file.toURI().toURL();try (URLClassLoader myClassLoader new URLClassLoader(new URL[]{url}, Thread.currentThread().getContextClassLoader())) {//通过jarFile和JarEntry得到所有的类JarFile jar new JarFile(file);//返回zip文件条目的枚举EnumerationJarEntry enumFiles jar.entries();JarEntry entry;//测试此枚举是否包含更多的元素while (enumFiles.hasMoreElements()) {entry enumFiles.nextElement();if (entry.getName().indexOf(META-INF) 0) {String classFullName entry.getName();if (classFullName.endsWith(.class)) {//去掉后缀.classString className classFullName.substring(0, classFullName.length() - 6).replace(/, .); //类名Class? myclass myClassLoader.loadClass(className);System.out.println(String.format(类名%s, className));//得到类中包含的属性Method[] methods myclass.getMethods();for (Method method : methods) {String methodName method.getName();if (DEFAULT_METHODS.contains(methodName)) {continue;}//方法名System.out.print(String.format(方法名%s; , methodName));Class?[] parameterTypes method.getParameterTypes(); //方法参数类型System.out.print(String.format(方法参数类型%s; , Arrays.stream(parameterTypes).map(Class::getSimpleName).collect(joining(,))));System.out.println(String.format(方法返回类型%s; , method.getReturnType().getSimpleName())); //方法返回值类型}System.out.println(***************************);}}}} catch (IOException e) {throw e;}}}调用外部 jar 包中的方法 public class JarUtils {public static void executeMethod(File f, String className, String methodName, Class[] classes, Object[] objects) {//通过URLClassLoader加载外部jartry (URLClassLoader urlClassLoader new URLClassLoader(new URL[]{f.toURI().toURL()})) {//获取外部jar里面的具体类对象Class? targetClass urlClassLoader.loadClass(className);//创建对象实例Object instance targetClass.newInstance();//获取实例当中的方法名为show参数只有一个且类型为string的public方法Method method targetClass.getMethod(methodName, classes);//传入实例以及方法参数信息执行这个方法Object returnObj method.invoke(instance, objects);System.out.println(returnObj);} catch (Exception e) {e.printStackTrace();}} }
http://www.hkea.cn/news/14316451/

相关文章:

  • 网站做中秋专题怎么弄什么网站做海宁的房产好
  • 嘉兴做网站的哪家好做排版的网站
  • 网站怎么提高权重小学生制作ppt的软件
  • 外贸企业邮箱哪家好seogw
  • 如何查看网站是谁建设的物联网对企业网站建设的要求
  • 电脑网站怎么做中国旅游网官网
  • ps如何做网站营销型网站效果不好
  • 怎么做自己的淘宝网站千万不要打开开发者选项
  • 淘宝联盟推广可以做网站吗手机网站开发有前途
  • 推荐手机网站建设微信小程序cms系统
  • 广州网站开发 找亦客公司优质荆州做网站的公司
  • 快速刷排名seo软件优化关键词是什么意思
  • 做网站起什么名字好呢网站内做关键词连接
  • 全面的基础微网站开发如何注册网络公司
  • 浙江省住房城乡建设厅网站定制网站的好处有哪些
  • 秀山网站建设端午节手抄报获奖建设科技期刊官网
  • 前端如何做能切换语言的网站有赞商城网页版
  • 网站建设500错误代码养殖公司网站
  • 网站专业销售团队介绍网站建设有哪些问题
  • 做网站猫要做端口映射吗wordpress 有赞云
  • 网站无法下载视频 怎么做搭建网站基本步骤
  • 做办公家具在哪个网站推销好商城网站制作报价
  • 淘宝优惠劵做网站模版网站建设没有图片
  • 网站图片缩略图在线支付的网站怎么做
  • 网站的标签怎么修改企业网站建设一般考虑哪些因素
  • 网站公司建设个服务号多少钱网站域名在哪里看
  • 颍东网站建设福建省住房和城乡建设厅网站首页
  • 工业设计网站哪家好给网站做外链要注意哪些
  • 怎么建设域名和网站专做美妆的视频网站
  • 网站的功能定位在线绘画网站