博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA动态加载JAR
阅读量:6627 次
发布时间:2019-06-25

本文共 1972 字,大约阅读时间需要 6 分钟。

// 生成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;
    }
}

转载于:https://www.cnblogs.com/chinaxin/p/3678442.html

你可能感兴趣的文章
hadoop2.4.1+hbase0.98.3实现的分布式网盘系统初步
查看>>
ibatis批量新增-自增长序列
查看>>
linux系统管理之九:rpm安装包
查看>>
Linux系统中查看日志的常用命令
查看>>
java基础(二) 自增自减与贪心规则
查看>>
VMWare View的组件
查看>>
Oracle GoldenGate学习之--异构平台同步(Mysql到Oracle)
查看>>
Linux下date命令使用举例说明
查看>>
Centos6下SVN服务器(结合Apache)的搭建
查看>>
Reactor和Proactor模式
查看>>
实验:关于XPath中的13个轴
查看>>
品牌的网闸介绍
查看>>
手势滑动源码(适合新手)
查看>>
我的友情链接
查看>>
快速熟悉开源项目
查看>>
Linux Centos 6.2 装好PHP启动Apache错误libmysqlclient.so.18:
查看>>
我的开发工具包
查看>>
运维角度浅谈MySQL数据库优化
查看>>
多版本python下,安装pip
查看>>
AndroidManifest.xml文件解析
查看>>