当前位置:   article > 正文

JAVA通过反射调用外部的jar包

JAVA通过反射调用外部的jar包

把外包jar的信息写在配置文件中,这样如果外部jar改变了,只需要修改properties相应的配置即可。

config.properties文件内容如下

  1. jarUrl=E:/MessageSend.jar
  2. className=org.linewell.message.MessageSend
  3. methodName=sendMessage

获取conf.properties的方法如下:

  1. private static Properties props;
  2. //静态代码块
  3. static{
  4. loadProps();
  5. }
  6. /*
  7. *把properties文件加载进来
  8. */
  9. private synchronized static void loadProps() {
  10. props = new Properties();
  11. FileInputStream in = null;
  12. try {
  13. in = new FileInputStream(new File("E:/config.properties"));
  14. props.load(in);
  15. } catch (FileNotFoundException e) {
  16. } catch (IOException e) {
  17. } finally {
  18. try {
  19. if(null != in) {
  20. in.close();
  21. }
  22. } catch (IOException e) {
  23. }
  24. }
  25. }
  26. /*
  27. *通过传入key值获取对应value
  28. */
  29. public static String getProperty(String key){
  30. if(null == props) {
  31. loadProps();
  32. }
  33. return props.getProperty(key);
  34. }

 

通过反射的方式去实例外部jar的类并且调用方法:

  1. /*
  2. *调用外部方法并传值
  3. */
  4. public static void send(ArrayList<String> arr, String str) {
  5. try {
  6. File file=new File(getProperty("jarUrl"));
  7. URL url=file.toURI().toURL();//获得jar地址
  8. ClassLoader loader=new URLClassLoader(new URL[]{url});//获得类加载器
  9. Class<?> cls;
  10. cls = loader.loadClass(getProperty("className"));//加载外部类
  11. Object obj=cls.newInstance();//实例化
  12. Method method=cls.getMethod(getProperty("methodName"),ArrayList.class,String.class);//获得方法
  13. method.invoke(null,arr,str);//执行方法
  14. } catch (Exception e) {
  15. e.printStackTrace();
  16. }
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小桥流水78/article/detail/770364
推荐阅读
相关标签
  

闽ICP备14008679号