动态加载jar包(一)
一、编写被调用的类
package com.qunar.helloworld;public class HelloWorld {public String sayHello(){return ("helloworld");} }
使用eclipse的export功能导出jar包,放在/Users/liqiu/Documents/workspace/HelloWorld.jar
二、编写调用jar包的类
package com.qunar.studyspring.javajar;import java.net.URL; import java.net.URLClassLoader; import java.lang.reflect.Method;public class JavaJar {public String doJar() {try {URL url = new URL("file:/Users/liqiu/Documents/workspace/HelloWorld.jar"); // 这里需要重点看URLClassLoader用法,URLClassLoader loader = new URLClassLoader(new URL[] { url }); // URL跟我们日常见到的格式用法不太一样Class c = loader.loadClass("com.qunar.helloworld.HelloWorld"); // 在上面找到并加载jar包后,可以通过此Object myObject = c.newInstance(); // 函数加载某个类,并使用 newInstance// 生成一个新的对象Method m = c.getDeclaredMethod("sayHello"); // getDeclaredMethod()方法可以获得// 指定名字的方法m.setAccessible(true); // setAccessible方法使上面得到的方法可用 System.out.println(m.invoke(myObject)); // 由于sayHello方法返回一个String// 使用m.invoke去调用方法m 也就是sayHello} catch (Exception ex) {System.out.println(ex);}return "ddddd";} }
三、编写测试方法
package com.qunar.studyspring;import org.junit.Test;import com.qunar.studyspring.javajar.JavaJar;public class JarTest {@Testpublic void sayHello(){JavaJar javajar = new JavaJar();String ss = javajar.doJar();System.out.println(ss);} }
四、测试结果
helloworld ddddd
动态加载jar包(一)相关推荐
- java程序动态加载jar包,并调用其中的方法
再编写Java应用程序的时候我们通常需要动态的加载jar,具体的代码如下: demo1.jar中的invoke方法: package com.amx.test; public class Test ...
- java实现动态加载jar包中的class(破坏双亲委派来实现)
背景 最近在项目中在使用Drools来做规则,drools确实功能比较强大,但是学习成本也比较高,语法比较繁琐.我们项目是做的动态规则,用户可以通过上传jar包的方式来动态的再我们ruleengine ...
- java动态打jar包_java动态加载jar包
目录结构如下. ├── main │ ├── java │ │ └── lu │ │ └── tool │ │ └── jar │ │ ├── InterfaceR ...
- 使用反射获得jar包中的类、方法、参数、返回值类型,然后动态加载jar包运行方法
其实我的需求是在系统中 测试用户导入的jar包,所有网上找了很多解决方案,踩过很多坑,再加上以前搞c++的,对java不是很熟, 这里特意记录下,算是基本满足需求了 使用反射获得jar包中的类.方法. ...
- JAVA动态加载JAR包执行程序
入口代码 import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.ne ...
- flink sql udf jar包_Java动态加载Jar实例解析
导读:在实际项目开发中,有时会遇到需动态加载jar包的应用场景.如将Flink的UDF自定义方法制作成方法库(既打成一个Jar),在提交给Flink集群的Job中动态加载jar便可使用.下面将举一个简 ...
- java动态加载jar文件并执行方法
在项目开发的过程中,有时候需要动态灵活的加载某个jar包并执行里面的方法的时候,我们可以使用本篇文章写得方式去动态的加载jar包而不用使用原始方式引入jar包作为lib去使用,接下来介绍如何动态加载j ...
- android动态jar,Android动态加载Jar(包含第三方依赖Jar)
最近项目有一个需求,需要根据用户需求动态加载APP内某功能模块,且当该部分功能模块代码有变动,只需更新该功能JAR,无需更新整个APK,基于这个需求,决定采用动态加载Jar的方式去实现,于是各种查资料 ...
- [转]Android动态加载jar/dex
本文转自:http://www.cnblogs.com/over140/archive/2011/11/23/2259367.html 前言 在目前的软硬件环境下,Native App与Web App ...
最新文章
- 微信小程序中的tabBar设置
- 知乎热议:28岁郭宇期权过亿,彪悍从字节退休,旅居日本开温泉酒店
- openfoam安装中出现allmake error_深入理解 OpenFOAM 环境与编译过程
- date类before()方法的主要作用是_黄精的主要作用及中医食疗方法
- MySQL(九)插入、更新和删除
- B. Alyona and a tree(dsu on tree + bit)
- I2C设备驱动编写,struct i2c_device_id,struct i2c_driver,i2c_add_driver,i2c_register_board_info
- 阿里强化学习入选MIT十大突破 “新技术”
- php如何设计一个网站,如何设计一个优质的外贸网站?
- 学习VC与C++先后顺序
- html 怎么调用js中函数返回值,JavaScript 函数
- spark学习7之IDEA下搭建Spark本地编译环境并上传到集群运行
- H5跳转支付宝小程序
- windows系统自带cmd命令下载文件(类似linux的wget下载文件)
- 自适应分级轮询超时机制
- dangdang.com的故事
- 卸载360企业版密码
- java aes iv_java AES加密解密
- 快速解决Kubernetes从k8s.gcr.io仓库拉取镜像失败问题
- mysql(8.0.28)设置开机自启动
热门文章
- linux之删除vi残留的swp文件
- java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决
- 算法优化策略之“中途相遇”算法思想
- 9.1 正则介绍_grep(上)
- Android -- ViewGroup源码分析+自定义
- javascript内存泄露
- Golang go 命令
- Linux 命令(47)—— file 命令
- fdisk -l查看硬盘分区信息及硬盘分区介绍
- webpack2中postcss-loader报错noconfigfound