动态加载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 {
@Test
public void sayHello(){
JavaJar javajar = new JavaJar();
String ss = javajar.doJar();
System.out.println(ss);
}
}
四、测试结果
helloworld
ddddd
动态加载jar包(一)的更多相关文章
- JAVA动态加载JAR包的实现
如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...
- java动态加载jar包,并运行其中的类和方法
动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...
- 动态加载jar包(二)
上次说的加载jar包,有几个问题没有解决: 1.如果项目包含了其他的jar包如何解决? 2.如何规范上传的jar包的类和方法? 下面就解决一下上面两个问题 一.首先编写被调用的类,这次使用maven工 ...
- 深入浅出Android动态加载jar包技术
在实际项目中,由于某些业务频繁变更而导致频繁升级客户端的弊病会造成较差的用户体验,而这也恰是Web App的优势,于是便衍生了一种思路,将核心的易于变更的业务封装在jar包里然后通过网络下载下来,再由 ...
- 动态加载jar包中的类(方式一)
嘛, 直接上代码 public static class TestClassLoader extends ClassLoader { @Override protected Class<?> ...
- Java动态加载JAR包
参考代码: package org; import java.io.File; import java.net.URL; import java.net.URLClassLoader; import ...
- JAVA动态加载JAR包执行程序
入口代码 import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.ne ...
- Android动态加载jar、apk的实现
前段时间到阿里巴巴参加支付宝技术分享沙龙,看到支付宝在Android使用插件化的技术,挺好奇的.正好这几天看到了农民伯伯的相关文章,因此简单整理了下,有什么错误希望大神指正. 核心类 1.1 ...
- 【Android】Android动态加载Jar、APK的实现
本文介绍Android中动态加载Jar.APK的实现.而主要用到的就是DexClassLoader这个类.大家都知道Android和普通的Java虚拟机有差别,它只能加载经过处理的dex文件.而加载这 ...
随机推荐
- C#编程(六十一)------------LINQ中的扩展方法
原文链接: http://blog.csdn.net/shanyongxu/article/details/47208401 LINQ中的扩展方法 LINQ中where扩展方法,要想使用,必须导入us ...
- vs已停止工作
第一步: 开始-->所有程序-->Microsoft Visual Studio 2012-->VisualStudio Tools-->VS2012 开发人员命令提示(以管理 ...
- 并查集(Union-Find) 应用举例 --- 基础篇
本文是作为上一篇文章 <并查集算法原理和改进> 的后续,焦点主要集中在一些并查集的应用上.材料主要是取自POJ,HDOJ上的一些算法练习题. 首先还是回顾和总结一下关于并查集的几个关键点: ...
- UICollectionViewFlowLayout使用示例
UICollectionViewFlowLayout使用示例 效果 源码 https://github.com/YouXianMing/iOS-Project-Examples // // ViewC ...
- 强制windows系统重启at命令
at 02:00 /every:m,t,w,th,f,s,su shutdown -r -f -t 0
- vRealize Automation部署虚机如果出错怎么办?
以下地方的日志可以查看: 1. Requests –> Choose my request -> View Detail –> Execution Information. 2. I ...
- Centos安装FTP服务器和配置
安装 yum install vsftpd 启动/重启/关闭 /sbin/service vsftpd start /sbin/service vsftpd restart /sbin/service ...
- 【Spark】Spark-空RDD判断与处理
Spark-空RDD判断与处理 SparkKafkaDemo - Streaming Statistics rdd isempty count_百度搜索 Spark RDD.isEmpty costs ...
- python实现itemCF and userCF
http://my.oschina.net/zhangjiawen/blog/185625 1基于用户的协同过滤算法: 基于用户的协同过滤算法是推荐系统中最古老的的算法,可以说是这个算法的诞生标志了推 ...
- HTTP协议中源端口和目标端口的问题
[提问] How is source port for HTTP determined? Is there ever collision in NAT? I know that when a HT ...