// 生成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. NopCommerce 在Category 显示 Store List列表

    实现效果如下: 1.在前台Web的Category Menu显示 Store; 2.点击 Store 显示 Store List列表: 3.点击 列表Store 的 Company Name 进入该S ...

  2. 时隔一年再读到the star

    The Star Arthur C. Clarke It is three thousand light-years to the Vatican. Once, I believed that spa ...

  3. 【三石视频教程】当FineUIPro遇到ReportViewer

    FineUIPro 下个版本(v2.8.0)即将支持 ReportViewer,为此三石特别制作了一期视频教程,供大家参考. 运行效果图:   视频下载:http://pan.baidu.com/s/ ...

  4. 客户端Socket

    导语 java.net.Socket类是JAVA完成客户端TCP操作的基础类.其他建立TCP网络连接的类(如URL,URLConnection和EditorPane)最终会调用这个类的方法.这个类本身 ...

  5. Linq 单表城市级联

    var list = (from province in db.Areas && province.IsDel == join city in db.Areas on province ...

  6. com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'dd' in 'where clause'

    今天在使用mysql数据库查找数据的时候报错,错误信息如下: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown co ...

  7. 神秘代理-Proxy

    前言: 代理模式作为常见的设计模式之一,在项目开发中不可或缺.本文就尝试着揭开代理的神秘面纱,也欢迎各路人批评指正! 1.如何实现代理: [假设有个关于汽车移动(move)的计时需求]设计:Movea ...

  8. 关于SharpDevelop 4版本以上没有ILAsm模板项目问题

    学习CIL的时候遇到的问题,记录一下. 查了一下英文网站,SharpDevelop 3 版本有ILAsm模板,但是有人运行3版本的CIL项目有问题. 说明一下SharpDevelop 4版本添加ILA ...

  9. 小猪cms ClassifyAction.class.php

    <?php /** *语音回复 **/ class ClassifyAction extends UserAction{ public $fid; public function _initia ...

  10. Python从破门而入到夺门而出

    MD版网盘备份: 链接: https://pan.baidu.com/s/1kVJNRSz 密码: agxt 基于<简明Python教程> 一.Python概览 1.使用PyCharm是非 ...