JAVA动态加载JAR
// 生成JAR包D:\TestClass.jar
package hand.java.loadjar;
public class TestClass {
private String sayHello = "Hello World!!";
public String sayHello() {
return this.sayHello;
}
}
// 创建一个测试类
package hand.java.loadjar;
import java.net.URL;
import java.net.URLClassLoader;
import java.lang.reflect.Method;
public class LoadJarTest {
public LoadJarTest(){
try {
URL url = new URL("file:D:\\TestClass.jar");
URLClassLoader loader = new URLClassLoader(new URL[]{ url });
// Load class
Class<?> myclass = loader.loadClass("hand.java.loadjar.TestClass");
// Gene new object
Object myobject = myclass.newInstance();
// Get function
Method method = myclass.getDeclaredMethod("sayHello");
// Make the function valid
method.setAccessible(true);
// Invoke method
System.out.println(method.invoke(myobject));
} catch (Exception ex) {
ex.printStackTrace();
}
}
@SuppressWarnings("unused")
public static void main(String[] args){
LoadJarTest loadjar = new LoadJarTest();
}
}
运行,输出内容:
Hello World!!
package hand.dynamic.jar;
import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
public class JarLoadUtil {
private static String jar_path = "D:\\JAR";
private static URLClassLoader loader = null;
// private static String curDir = System.getProperty("user.dir");
private static String separator = System.getProperty("file.separator");
public static URLClassLoader getURLClassLoader() {
if (loader == null) {
String fileNames[] = new File(jar_path).list();
if (fileNames != null && fileNames.length > 0) {
URL urls[] = new URL[fileNames.length];
for (int i = 0; i < fileNames.length; i++) {
try {
// if (fileNames[i].equals("dom4j-1.6.1.jar"))
urls[i] = new URL(jar_path + separator + fileNames[i]);
} catch (MalformedURLException e) {
System.out.println("加载指定目录下JAR文件出错!");
throw new RuntimeException("加载指定目录下JAR文件出错!", e);
}
}
loader = new URLClassLoader(urls);
}
}
return loader;
}
}
JAVA动态加载JAR的更多相关文章
- java动态加载jar文件
public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, Invo ...
- JAVA动态加载JAR包的实现
如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...
- Java动态加载jar及class文件
经常碰到需要动态加载jar及class文件的场景.Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,但JDK仍提供了一整套方法来动态加载jar文件和class文件. 一.动态加载ja ...
- java动态加载jar包,并运行其中的类和方法
动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...
- 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 ...
- [转载] Java中动态加载jar文件和class文件
转载自http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...
- Java_Java中动态加载jar文件和class文件
转自:http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...
- Android动态加载jar/dex
前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优 ...
随机推荐
- 第三方Android 模拟器流畅速度快,适合开发人员
“工欲善其事,必先利其器.” 使用Android模拟器开发和调试应用肯定比使用真机方便.但相比XCODE的IOS模拟器,Android SDK自带的AVD实在不争气,不过一些第三方的模拟器却表现不俗! ...
- 一枚招聘信息——分期乐招页面重构/UI开发(8k-12k 深圳 经验1-3年 学历不限 全职)
腾讯人创建的分期乐公司,急需页面重构人才若干枚,公司前景好,机会难得,有兴趣的速速 8k-12k 深圳 经验1-3年 学历不限 全职 公司网站: http://www.fenqile.com/ 职位诱 ...
- UNITY 移动到指定位置的写法
//move towards a target at a set speed. private void MoveTowardsTarget() { //the speed, in units per ...
- mobiscroll之treelist使用
前言 进行前端开发工作也有一段时间了,一直以来都是渣渣,以前开通博客写过一段时间但是没坚持下来,现在想有时候还是得写写什么吧,自己遇到的新东西写写归纳总结一下总归是好的,并且能够与更多人交流分享,相互 ...
- [LeetCode] Maximal Rectangle 最大矩形
Given a 2D binary matrix filled with 0's and 1's, find the largest rectangle containing all ones and ...
- Asp.net 设置GridView自适应列宽不变形
动态绑定的GridView由于列数不固定,而列又太多,这样设置GridView固定宽度就不能满足需求了.为此整理了两种方法来达到GridView自适应列宽不变形的效果. //在GridView的行数据 ...
- 51Nod 1278 相离的圆
51Nod 1278 相离的圆 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1278 1278 相离的圆 基 ...
- Android开发之延时执行
new Handler().postDelayed(new Runnable() { @Override public void run() { //两秒后执行 startMainActivity() ...
- jquery版固定边栏滚动特效
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- JSONP跨域操作
JSP <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3. ...