JAVA通过反射调用外部的jar包

2023-10-26

把外包jar的信息写在配置文件中,这样如果外部jar改变了,只需要修改properties相应的配置即可。

config.properties文件内容如下

jarUrl=E:/MessageSend.jar
className=org.linewell.message.MessageSend
methodName=sendMessage

获取conf.properties的方法如下:

private static Properties props;
    //静态代码块
	  static{
	        loadProps();
	    }
	  	/*
         *把properties文件加载进来
         */
	    private synchronized static void loadProps() {
	        props = new Properties();
	        FileInputStream in = null;
	        try {
	            in = new FileInputStream(new File("E:/config.properties"));
	            props.load(in);
	        } catch (FileNotFoundException e) {
	           
	        } catch (IOException e) {
	            
	        } finally {
	            try {
	                if(null != in) {
	                    in.close();
	                }
	            } catch (IOException e) {
	               
	            }
	        }
	    }

	    /*
         *通过传入key值获取对应value
         */
	    public static String getProperty(String key){
	        if(null == props) {
	            loadProps();
	        }
	        return props.getProperty(key);
	    }

 

通过反射的方式去实例外部jar的类并且调用方法:

/*
*调用外部方法并传值
*/
public static void send(ArrayList<String> arr, String str) {
	try {
		File file=new File(getProperty("jarUrl"));
		URL url=file.toURI().toURL();//获得jar地址
		ClassLoader loader=new URLClassLoader(new URL[]{url});//获得类加载器
		Class<?> cls;
		cls = loader.loadClass(getProperty("className"));//加载外部类
		Object obj=cls.newInstance();//实例化
		Method method=cls.getMethod(getProperty("methodName"),ArrayList.class,String.class);//获得方法
		method.invoke(null,arr,str);//执行方法
		
	} catch (Exception e) {
		
		e.printStackTrace();
	}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA通过反射调用外部的jar包 的相关文章

  • 动态代理 [用jdk实现]

    一 java 的jdk動態代理 用JDK實現的動態代理 被代理的對象必須實現一個接口才可以 其實現主是通過java lang reflect Proxy類和 java lang reflect InvocationHandler接口 二 本
  • Java多线程和操作系统多线程关系

    这篇文章要讨论的是Java编程中的多线程和操作系统中的多线程的区别问题 线程状态 首先两者的线程状态是一样的 创建 就绪 执行 阻塞 终止 其实这五个状态也是进程的状态 那么Java中的多线程 和 OS中的多线程的区别在哪里 我们先来看下O
  • Java基础 :反射、注解、代理、线程池、依赖的学习和理解

    高新技术的重要性 这里的高新技术指的是Java基础中的知识 比如 反射 注解 代理 线程池 依赖注入等等 市面上的开源框架大多都是使用了这些Java基础的知识去实现的 掌握了这些Java基础的知识 能帮助我们更好的理解一些好的开源框架的实现
  • Java根据枚举名使用反射获取枚举值

    由于前端需要根据枚举名获取实时获取枚举值 所以通过反射去得到枚举数据 一 首先我们新建一个枚举类接口 用于之后反射使用 package com littlematch enums biz 枚举值接口定义类 public interface
  • 策略+工厂+反射记录一次switch代码简化过程

    遇到的问题 一张记录表 记录了10个业务的字段 一个入参type说明了要修改哪个字段 最初是通过switch type case 来做的 但是涉及这样子的判断多了 每次都要不断的switch 并且case里面不同方法有不同的处理 一个公共的
  • 反射的使用

    反射 一 反射基本概念 1 反射是什么 2 Class类实例对象是什么 Field类实例对象和Method类实例对象是什么 3 jVM类加载机制 很难又很重要 待补充 二 反射的作用 三 Class详解 Class的使用场景 1 通过对象获
  • LRC算法的Java实现

    项目中要用到 本来想拿来主义 结果没有找到合适的 所有自己写了一个 LRC具体算法如下 1 对需要校验的数据 2n个字符 两两组成一个16进制的数值求和 2 将模值按位取反 3 加1 Java代码实现 输入byte data 返回LRC校验
  • Eclipse中Maven的使用以及Pom.xml详解

    Eclipse中创建Maven项目 一 Maven项目的创建 1 点击File gt New gt Other gt 搜索maven gt 选择Maven Project点击Next 2 勾选第一项 表示跳过骨架选择 点击Next 3 输入
  • Java集合详解——TreeSet集合的介绍及其排序

    一 TreeSet集合的自动排序 TreeSet集合的继承结构图 1 TreeSet集合使用红黑树数据结构实现元素的排序和存储 底层实际上是一个TreeMap集合 2 Tree Map集合底层实际上是一个二叉树 3 放到TreeSet集合中
  • 反射与注解(详细)

    文章目录 一 注解Annotation 1 什么是注解 2 内置注解 3 元注解 4 自定义注解 二 反射机制 1 静态vs动态语言 动态语言 静态语言 2 java反射机制概述 3 java反射机制研究及应用 反射机制提供的功能 优点 缺
  • Java中的反射(一)

    一 反射概念 反射 简单来说就是分析类信息的能力 类信息包括属性 方法 构造器等 Java反射机制的核心是在程序运行时动态加载类并获取类的详细信息 从而操作类或对象的属性和方法 本质是JVM得到类对象之后 再通过类对象进行反编译 从而获取对
  • 几个友好Java代码习惯建议

    我工作多年 遇到过各种各样的同事 我见过各种代码 优秀的 垃圾的 没有吸引力的等等 所以这篇文章记录了一个优秀的Java开发应该具备哪些良好的开发习惯或最佳实践 1 封装方法参数 当你的方法参数过多时 建议封装一个对象 下面是反面教材 谁教
  • java 虚拟机类装载的原理、实现、以及应用

    一 引言 Java虚拟机 JVM 的类装载就是指 将包含在类文件中的字节码装载到JVM中 并使其成为JVM一部分的过程 JVM的类动态装载技术能够在运行时刻动态地加载或者替换系统的某些功能模块 而不影响系统其他功能模块的正常运行 本文将分析
  • RocketMQ 用法详解,你学会了吗?

    大家好 我是指北君 消息中间件是我们工作中使用最频繁的一类中间件 它具有低耦合 可靠投递 广播 流量控制 最终一致性等一系列功能 成为异步RPC的主要手段之一 当今市面上有很多主流的消息中间件 如老牌的ActiveMQ RabbitMQ 炙
  • 使用JAVA反射的利与弊

    b color olive size large 在Java的20周年的纪念日的日子里 让我们来重新温习下Java里面的高级知识 Java肯定希望大家了解她 要不然你跟她天天相濡以沫了这么长时间 让她知道你竟然不了解她 不在乎她 那么她该有
  • Java 反射机制(二)

    前言 在上篇 Java 反射机制 一 介绍了一些 Java 反射相关的常用 API 在知道了如何去使用反射之后 作为一个合格的工程师 下一步肯定是要去了解它的如何实现的 我们今天就来看看在 JDK 源码中是如何去实现反射的 PS 以下源码分
  • Java GUI编程——在线聊天室

    引言 综合应用Java的GUI编程和网络编程 实现一个能够支持多组用户同时使用的聊天室软件 该聊天室具有比较友好的GUI界面 并使用C S模式 支持多个用户同时使用 用户可以自己选择加入或者创建房间 和房间内的其他用户互发信息 文字和图片
  • Tomcat中404/500 错误,自定义错误页面

    Tomcat中404 500 错误 自定义错误页面 当服务器出现404 500错误时候希望能够给用户友好的现实界面 只需要在项目的web xml中添加一些配置
  • Java面向对象——多态、Object类、instanceof关键字以及final关键字

    多态的概念 1 多态是指同一个方法调用可以在不同的对象上有不同的表现 即同一种方法调用方式适用于不同的数据类型 编译时和运行时 编译时期调用的是父类中的方法 但运行时期会根据实际的对象类型来调用适当的方法 这种行为称为动态绑定 即运行时决定
  • 信号完整性分析基础知识之传输线和反射(一):阻抗变化引起反射

    阻抗不连续引起的反射和失真可能会导致信号的误触发和误码 这是导致信号失真和质量下降的主要原因 在某些情况下 这看起来像振铃 当信号电平下降时 下冲会影响噪声预算并导致误触发 或者 在下降信号上 峰值可能会上升到低位阈值以上并导致误触发 下图

随机推荐

  • ElementUI+Vue 解决在使用el-dialog时,点击el-dialog外的其他区域会导致该对话框关闭。

    转载自 https blog csdn net weixin 42230550 article details 95201746 需求描述 今天 在做Element Vue项目时遇到一个需求 甲方要求在Dialog打开状态下 点击该Dial
  • YOLOv4网络详解

    0前言 在YOLOv4论文中 作者其实就是把当年所有的常用技术罗列了一遍 然后做了一堆消融实验 1 YOLOV4的网络改进部分 1 主干特征提取网络 DarkNet53 gt CSPDarkNet53 使用Mish激活函数 2 特征金字塔
  • java---为什么byte+byte=int

    byte也是基本数据类型范围是 128 127 但是做加法时会有这么一个问题 我们清晰的看到 byte byte byte报错了 这是为什么呢 编译器说他需要int类型 这是因为在java中 因为byte数量太小了 从硬件的角度讲 为较小的
  • uni-app使用时遇到的坑

    一 uni app开发规范 1 微信小程序request请求需要https 小程序端 在本地运行时 可以使用http 但是预览或者上传时 使用http无法请求 APP端 一般APP可以使用http访问 高版本的APP可能需要用https访问
  • 浪涌测试如何进行试验配置

    此文只是针对浪涌测试中的试验配置部分内容进行总结 如下表所示 试验对象 开路电压波形 注1 短路电流波形 输出阻抗 电源 线 线 1 2 50us 8 20us 2 18uF 线 地 2 10 9uF 非屏蔽不对称 注2 非差分通讯线 线
  • 和为s的数字

    题目描述 输入一个数组和一个数字s 在数组中查找两个数 使得它们的和正好是s 如果有多对数字的和等于s 输出任意一对即可 你可以认为每组输入中都至少含有一组满足条件的输出 样例 输入 1 2 3 4 sum 7 输出 3 4 分析 首先想到
  • Ubuntu系统安装分区

    一 U盘启动盘制作 1 U盘一个 U盘空间大小足够大 8G够用了 U盘里面的内容提前转存备份 2 UltraISO软碟通启动制作工具或Universal USB Installer 3 Ubuntu官网找到自己需要Ubuntu版本下载ISO
  • blfs:为lfs虚拟机增加桌面03

    编译安装Qt5 15 我比较好奇 当前只安装了twm X org提供的简单的窗口管理器 这个时候Qt的界面是怎么样的一个呈现 Qt5 15安装 required和recommanded必装 optional中涉及到runtime的建议安装
  • 树莓派4B Ubuntu 远程桌面 步骤

    文章目录 准备 更换国内源 更新软件列表和软件 安装SSH 安装ubuntu desktop xrdp方法 VNC方法 问题故障解决 花屏 蓝屏 黑屏 无法修正错误 因为您要求某些软件包保持现状 就是它们破坏了软件包间的依赖关系 参考 准备
  • 时间序列-预测-经典算法:Arimax【带额外输入的自回归综合移动平均】【多元变量预测】【ARIMA模型的一个扩展版本】

    标准的ARIMA 移动平均自回归模型 模型允许只根据预测变量的过去值进行预测 该模型假定一个变量的未来的值线性地取决于其过去的值 以及过去 随机 影响的值 ARIMAX模型是ARIMA模型的一个扩展版本 它还包括其他独立 预测 变量 该模型
  • C开源项目-TinyHttp解读(上)

    项目简介 此项目可以自行在GitHub上进行下载 作者的ReadMe文档也写得是比较详细的 这里用到了较多的Unix编程 不会的可以一点一点去查 实名感谢我们家杰佬发给我的APUE 可以当字典查 项目内容 其实就是实现了一个轻量级服务器的功
  • ubuntu 14.04安装opencv2.4.13

    1 下载opencv2 4 13的 zip包 http opencv org downloads html 2 解压到任意目录 unzip opencv 2 4 13 zip 3 在解压后的目录里创建一个release cd opencv
  • 虚拟机 arm服务器,一种面向ARM多核处理器服务器平台的系统虚拟机

    主权项 1 一种面向ARM多核处理器服务器平台的系统虚拟机 基于KVM实现 采用宿主模型架构 其特征在于 该虚拟机主要包括 1 物理硬件 物理硬件进一步包括物理CPU 物理内存 物理外设 物理硬件是整个系统虚拟机的硬件基础设施 2 宿主OS
  • css样式表的作用和意义,什么是CSS?

    CSS是大家很熟悉的一个词了 但是如果问你 什么是CSS 你能回答得出吗 到底什么是CSS CSS有什么作用 CSS长什么样子 今天我们就给大家一一解答 CSS全称为Cascading Style Sheets 层叠样式表 中文翻译为 层叠
  • SUSE linux 使用LVM安装系统和管理

    引出 在我们安装好linux系统后会发现在需要修改磁盘分区的时候会比较困难 系统安装的 目录的文件系统要更改基本不太可能 其他目录如 home目录也比较困难 但是系统安装时要是采用的LVM管理的方式安装的话就会截然不通 一 首先普及下LVM
  • 嵌入式python智能实训总结_嵌入式智能家居心得体会 智能家居实训报告2000字

    家里装全套智能家居是一种什么体验 男士体验 5 半年后 我们发现有一篇回到第一篇文章 女性体验 第一篇 嗯 半夜哺乳 不用涂抹 第二篇 睡觉时忘记关灯 不要踢老公 第三 可以随时检查宝宝的状态 而且你可以监控老公是否不在家 第四 出行时 不
  • 软件测试之白盒测试

    白盒测试 一 白盒测试定义 白盒测试 又称结构测试 是在已知程序的内部工作过程的情况下 用来测试程序的内部结构 并判定其结果是否与预期的结果一致 一般说来 白盒测试相对简单 因为白盒测试是在已知程序的内部工作流程的情况下进行的 而且白盒测试
  • GIT常用命令以及使用详解图示

    1配置个人信息 方便提交代码管理 获取Git配置信息 执行以下命令 git config list 如果你还没有设置名字 user name 和 user email的话 可以用以下指令设置 git config global user n
  • 两种方法教你在postman设置请求里带动态token

    postman传递动态参数的最佳实践 问题描述 一 设置全局 环境变量传递 在postman中新增一个环境变量devToken 将获取到的token赋值给devToken 其他请求接口根据需要在请求时带上devToken 二 在每个请求中带
  • JAVA通过反射调用外部的jar包

    把外包jar的信息写在配置文件中 这样如果外部jar改变了 只需要修改properties相应的配置即可 config properties文件内容如下 jarUrl E MessageSend jar className org line