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的优 ...
随机推荐
- 搭建基于PHP的www服务器
安装MySQL #!/bin/bash mount |grep "/dev/sr0" if [ "$?" != 0 ];then mount /dev/sr0 ...
- 【repost】JavaScript Scoping and Hoisting
JavaScript Scoping and Hoisting Do you know what value will be alerted if the following is executed ...
- 使用串口线真机调试Linux内核
一.环境 ubuntu 14.04 一台有串口的PC(编号PC1,被调试机器) 另一台PC通过USB转串口线连接PC1(编号PC2,发起调试命令的机器) 二.串口线配置及测试 安装cutecom US ...
- CentOS系统yum源使用报错:Error: Cannot retrieve repository metadata (repomd.xml) for repository: rpmforge.
服务器上的yum突然不好使用,使用yum的时候报错如下:[root@bastion-IDC src]# yum list......Could not retrieve mirrorlist http ...
- 【转】BAT 批处理脚本 教程
第一章 批处理基础第一节 常用批处理内部命令简介批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令.小知识:可以在 ...
- Spring在非web应用中关闭IoC容器 (registerShutdownHook)
在基于web的ApplicationContext实现中,已有相应的实现来处理关闭web应用时恰当地关闭Spring IoC容器.但,如果你正在一个非web应用的环境下使用Spring的IoC容器,如 ...
- .Net Core Linux centos7行—发布程序到生产环境
实验demo现在需要发布到生产环境,发现在发布的时候要考虑到不一致的几个地方. 1.各类配置文件线下,线上不一致. 2.绑定的url不一致,可能是域名不一致,也可能是schema不一致(http,ht ...
- 自建Ceph存储与 AWS、阿里云、腾讯云的成本对比
本文单从存储成本角度对比了自建Ceph存储和业界公有云存储的硬件成本,不包括IDC带宽成本. 统计Ceph集群的用到的主要设备为: OSD.MON.RGW服务器 .TOR交换机. 机架. 下表解释: ...
- SQL Server-5种常见的约束
引自:http://www.cnblogs.com/dekevin/p/4772235.html SQLServer 中有五种约束, Primary Key 约束. Foreign Key 约束. U ...
- h5面试题集合
一.闭包的理解: 使用闭包主要是为了设计私有的方法和变量.闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露. 闭包三个特性: 1.函数嵌套函数 ; ...