空无以求全
宁静以致远
当前位置:首页 > .html

Java调用外部jar文件

作者:大熊空间发布时间:2022-02-19 17:09分类: 浏览:240评论:0


导读: 一、建立Service接口(Service.java): package&...

一、建立Service接口(Service.java):

package service;

public interface Service ...{
    public void start();
    public void shutdown();

}

二、建立接口的实例化应用(AppDemo.java):
package application;

import service.Service;

public class AppDemo implements Service ...{

    public void shutdown() ...{
        System.out.println("关闭");

    }


    public void start() ...{
        System.out.println("启动");

    }


}


三、将AppDemo.java导出为Jar包,并将其放置在工程的application目录下。
四、新建Jar包加载类(JarLoader.java):
package loader;

import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class JarLoader extends URLClassLoader ...{
    
    
    private static JarLoader loader = null;
    
    private JarLoader()...{
        super(new URL[0], JarLoader.class.getClassLoader());
    }

    public static JarLoader getInstance()...{
        if(loader==null)
            loader = new JarLoader();
        return loader;
    }

    public void addURL(String url) throws MalformedURLException ...{

        this.addURL(new URL(url));
    }


}


五、测试一下:

package test;

import java.net.MalformedURLException;


import service.Service;

import loader.JarLoader;

public class Test ...{

    /** *//**
     * @param args
     */

    public static void main(String[] args) ...{
        JarLoader loader = JarLoader.getInstance();

        try ...{
            loader.addURL("jar:file:///"+System.getProperty("user.dir")
                    + "/application/app1.jar" + "!/");
            Service serv = (Service)Class.forName("application.AppDemo", true, loader).newInstance();
            serv.start();
            serv.shutdown();
        }
 catch (MalformedURLException e) ...{
            e.printStackTrace();
        }
 catch (InstantiationException e) ...{            
            e.printStackTrace();
        }
 catch (IllegalAccessException e) ...{            
            e.printStackTrace();
        }
 catch (ClassNotFoundException e) ...{            
            e.printStackTrace();
        }


    }



}

未命名.jpg


发表评论: