// 生成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的更多相关文章

  1. java动态加载jar文件

    public static void main(String[] args) throws IllegalAccessException, IllegalArgumentException, Invo ...

  2. JAVA动态加载JAR包的实现

    如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...

  3. Java动态加载jar及class文件

    经常碰到需要动态加载jar及class文件的场景.Java类由于需要加载和编译字节码,动态加载class文件较为麻烦,但JDK仍提供了一整套方法来动态加载jar文件和class文件. 一.动态加载ja ...

  4. java动态加载jar包,并运行其中的类和方法

    动态加载jar包,在实际开发中经常会需要用到,尤其涉及平台和业务的关系的时候,业务逻辑部分可以独立出去交给业务方管理,业务方只需要提供jar包,就能在平台上运行. 下面通过一个实例来直观演示: 第一: ...

  5. Java动态加载JAR包

    参考代码: package org; import java.io.File; import java.net.URL; import java.net.URLClassLoader; import ...

  6. JAVA动态加载JAR包执行程序

    入口代码 import java.io.File; import java.net.MalformedURLException; import java.net.URL; import java.ne ...

  7. [转载] Java中动态加载jar文件和class文件

    转载自http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...

  8. Java_Java中动态加载jar文件和class文件

    转自:http://blog.csdn.net/mousebaby808/article/details/31788325 概述 诸如tomcat这样的服务器,在启动的时候会加载应用程序中lib目录下 ...

  9. Android动态加载jar/dex

    前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优 ...

随机推荐

  1. AC日记——蓬莱山辉夜 codevs 2830

    2830 蓬莱山辉夜  时间限制: 1 s  空间限制: 32000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Description 在幻想乡中,蓬莱山辉夜是月球 ...

  2. struts-tags通用标签基本用法

    2017-01-07 16:02:46 <s:debug></s:debug><!-- 标签库中实现的debug --> ${name }<!-- 是从对象栈 ...

  3. [LeetCode] Distinct Subsequences 不同的子序列

    Given a string S and a string T, count the number of distinct subsequences of T in S. A subsequence ...

  4. C语言内存分配方法。

    当C程序运行在操作系统上时,操作系统会给每一个程序分配一定的栈空间. 堆为所有程序共有的,需要时需要申请访问. 一.栈 局部变量.函数一般在栈空间中. 运行时自动分配&自动回收:栈是自动管理的 ...

  5. StringHelper

    /// <summary> /// 文本取左边 /// </summary> /// <param name="str"></param& ...

  6. 队列&生产者消费者

    Queue是python标准库中的线程安全的队列(FIFO)实现,提供了一个适用多线程的先进先出的数据结构,即队列,用来在生产者和消费者线程之间信息传递. 如果在多线程中,给存放数据,也就是修改同一份 ...

  7. 递推 hdu 3411

    http://blog.csdn.net/wust_xhj/article/details/47779539 怎么推可以看这里 f[0]=0 f[1]=1 [0,1]* | 0  q  |(n-1)= ...

  8. position导致Safari工具栏不自动隐藏

    一般情况下,移动端网页在上滑的时候,Safari的工具栏会自动隐藏掉,下滑的时候又会出现. 但是,如果可滑动区域的最外层box写了position:absolute,就不会自动隐藏了. 例如像这样的页 ...

  9. Linux工具入门:make工具与Makefile文件

    1. make工具 利用make工具可以自动完成编译工作,这些工作包括: 如果修改了某几个源文件,则只重新编译这几个源文件 如果某个头文件被修改了,则重新编译所有包含该头文件的源文件 利用这种自动编译 ...

  10. 使用vuejs框架进行列表渲染

    爱编程爱分享,原创文章,转载请注明出处,谢谢!http://www.cnblogs.com/fozero/p/6170706.html 1.通过Script引入Vuejs框架 <script t ...