Java调用外部jar文件

一、建立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("启动");

    }

}
————————————————
版权声明:本文为CSDN博主「ms2578」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ms2578/article/details/1939307

三、将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();
        }

    }

}

java调用外部jar文件
https://blog.csdn.net/ms2578/article/details/1939307?utm_source=blogxgwz3

Java URLClassLoader动态加载外部java代码
https://blog.csdn.net/ty497122758/article/details/77170901

Java URLClassLoader 和 ClassLoader类加载器
https://www.cnblogs.com/rogge7/p/7766522.html

java中使用URLClassLoader访问外部jar包的java类
https://www.cnblogs.com/franson-2016/p/6145822.html

springboot应用启动原理(二) 扩展URLClassLoader实现嵌套jar加载
https://segmentfault.com/a/1190000013532009?utm_source=tag-newest


【java】自定义ClassLoader 加载外部类和jar文件
https://blog.csdn.net/u010900754/article/details/51455290

Java 读取jar包中的资源文件夹
https://blog.csdn.net/devotedwife/article/details/81837205

https://www.cnblogs.com/tuning/p/6943427.html
GETCLASS()和GETCLASSLOADER()区别 以及CLASSLOADER详解及用途(文件加载,类加载)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值