JAVA加载JAR包并调用JAR包中某个类的某个方法
2017-08-17 10:09
337 查看
JAVA加载JAR包并调用JAR包中某个类的某个方法示例如下:
需要将以上类打包成JAR,通过URLClassLoader读取
通常情况下:当某个项目需要较高的扩展性时,我们会采用这种方法,一般会将项目需要灵活扩展的地方抽象出对应的接口,在写外部JAR时引入并逐一实现事前约定的好的接口。这样当系统运行时,按照配置文件载入JAR包并读取Class时,可以强转成对应接口以满足我们的需求。当然也可以通过method的invoke调用,但这种方式并不提倡。
package com.example; public class Runner implements Runnable{ public void run() { System.out.println("the writer is running..."); } }
需要将以上类打包成JAR,通过URLClassLoader读取
import org.junit.Test; import java.lang.reflect.Method; import java.net.URL; import java.net.URLClassLoader; /** * Main * Created by Joker on 2017/8/16. */ public class Main { @Test public void test() throws Exception { URL url = new URL("file:E:/JavaJars/OtherJar/runner.jar"); URLClassLoader urlClassLoader = new URLClassLoader(new URL[]{url}, Thread.currentThread().getContextClassLoader()); Class<?> clazz = urlClassLoader.loadClass("com.example.Runner"); //Runnable runnable = (Runnable) clazz.newInstance(); //runnable.run(); Method method = clazz.getMethod("run"); method.invoke(clazz.newInstance()); } }
通常情况下:当某个项目需要较高的扩展性时,我们会采用这种方法,一般会将项目需要灵活扩展的地方抽象出对应的接口,在写外部JAR时引入并逐一实现事前约定的好的接口。这样当系统运行时,按照配置文件载入JAR包并读取Class时,可以强转成对应接口以满足我们的需求。当然也可以通过method的invoke调用,但这种方式并不提倡。
相关文章推荐
- java程序动态加载jar包,并调用其中的方法
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
- java加载外部文件数据到代码中:外部数据文件放到jar包中,调用方法getResourceAsStream
- Java加载jar文件并调用jar文件当中有参数和返回值的方法
- java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路
- java动态加载指定的类或者jar包反射调用其方法-涉及其他jar中的类就报ClassNotFound问题分析及解决思路
- JAVA实现动态加载jar包并调用其中的方法
- C#调用java的jar文件的方法(转)
- 在C#中调用Java生成的jar库文件的方法
- 通过oracle,调用java类,并加载jar包到oracle中以支持java类。
- C#调用java类、jar包方法;eclipse生成jar包
- C#调用java类、jar包方法。
- C#调用java类、jar包方法
- 实现在调用jar包中的java方法时显示方法注释
- Java调用weka.jar利用交叉验证方法进行分类
- java反射调用指定jar包中的类和方法
- java动态加载jar包,并运行其中的类和方法
- Java Applet调用jar包解决方法
- 居于反射机制Java动态调用jar方法
- java动态加载指定的类或者jar包反射调用其方法