# 동적 Jar loading 프로그램

#### 동적 jar 로딩 및 동적 method 호출 

- ```
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_1">   1</a> package com.exec;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_2">   2</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_3">   3</a> import java.io.File;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_4">   4</a> import java.io.FileFilter;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_5">   5</a> import java.io.FilenameFilter;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_6">   6</a> import java.lang.reflect.InvocationTargetException;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_7">   7</a> import java.lang.reflect.Method;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_8">   8</a> import java.net.URL;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_9">   9</a> import java.net.URLClassLoader;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_10">  10</a> import java.util.Arrays;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_11">  11</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_12">  12</a> public class ExecTest {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_13">  13</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_14">  14</a>         public static void main(String[] args) throws NoSuchMethodException, SecurityException, ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_15">  15</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_16">  16</a>                 // 코리안리 EAI customer function 위치 (고정 값)
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_17">  17</a>                 String dir = "C:\\eclipse-workspace\\com.exec\\src\\main\\resources\\deployFilder";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_18">  18</a>                 // 코리안리 EAI customer function prefix (고정 값) 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_19">  19</a>                 String jarName = "kr.co.koreanre.eai";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_20">  20</a>                 // 코리안리 EAI customer function Class 명 분류 할 수도 있다. 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_21">  21</a>                 String className = "kr.co.koreanre.eai.execEaiFunctionClass";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_22">  22</a>                 // 코리안리 EAI customer function method 명은 고정 예정 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_23">  23</a>                 String methodName = "execMathod";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_24">  24</a>                 // 코리안리 EAI customer function method에 전달되는 문자열 전달 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_25">  25</a>                 String param = "Call method ,"; 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_26">  26</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_27">  27</a>                 ExecTest ex = new ExecTest();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_28">  28</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_29">  29</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_30">  30</a>                 // kr.co.koreanre.eai-202110280920.jar의 include 여부를 확인, include되어도 최신 버전이 아닌 경우는 false로 return  
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_31">  31</a>                 if(!ex.checkLoadedJarList(dir,jarName))
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_32">  32</a>                 {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_33">  33</a>                         System.out.println(" > Do not include : " + jarName );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_34">  34</a>                         // 최신 버전으로 include 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_35">  35</a>                         ex.loadJar(dir);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_36">  36</a>                 }               
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_37">  37</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_38">  38</a>                 String returnString = ex.execMethod(className, methodName, param);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_39">  39</a>                 System.out.println(" > Return Value : " + returnString);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_40">  40</a>                 ex.checkLoadedJarList(dir, jarName);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_41">  41</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_42">  42</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_43">  43</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_44">  44</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_45">  45</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_46">  46</a>         /* =================================================================================== */
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_47">  47</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_48">  48</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_49">  49</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_50">  50</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_51">  51</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_52">  52</a>         /**
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_53">  53</a>          * kr.co.koreanre.eai-202110280920.jar의 로드 여부를 확인 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_54">  54</a>          * 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_55">  55</a>          * @param jarName
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_56">  56</a>          * @return boolean
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_57">  57</a>          */
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_58">  58</a>         private boolean checkLoadedJarList(String dir, String jarName) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_59">  59</a>                 System.out.println("\n>> Start Check loaded Jar list " ); 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_60">  60</a>                 boolean includJar = false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_61">  61</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_62">  62</a>                 ClassLoader classLoader = ClassLoader.getSystemClassLoader();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_63">  63</a>                 URL[] urls = ((URLClassLoader)classLoader).getURLs();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_64">  64</a>                   
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_65">  65</a>         for(URL url: urls){
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_66">  66</a>             if( url.getFile().toLowerCase().contains(".jar") ) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_67">  67</a>                 System.out.println(" > Included Jar : " + url.getFile());
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_68">  68</a>                     if(url.getFile().toLowerCase().contains(jarName))
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_69">  69</a>                     {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_70">  70</a>                         if(isLoadNewVersionJar(dir, url.getFile()))
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_71">  71</a>                         {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_72">  72</a>                                 includJar = true;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_73">  73</a>                         }else {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_74">  74</a>                                 includJar = false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_75">  75</a>                         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_76">  76</a>                     }else {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_77">  77</a>                         includJar = false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_78">  78</a>                     }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_79">  79</a>             }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_80">  80</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_81">  81</a>         return includJar;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_82">  82</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_83">  83</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_84">  84</a>         /**
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_85">  85</a>          * 디렉토리 안에서 파라메터로 전달한 jar 파일이 최신인지 여부를 판단 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_86">  86</a>          * @param dir 검토 폴더 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_87">  87</a>          * @param jarName 비교 jar 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_88">  88</a>          * @return boolean
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_89">  89</a>          */
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_90">  90</a>         private boolean isLoadNewVersionJar(String dir, String jarName) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_91">  91</a>                 boolean isNweVersion = false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_92">  92</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_93">  93</a>                 File file = new File(dir);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_94">  94</a>                 File[] fileNameList = file.listFiles(new FilenameFilter() {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_95">  95</a>                         public boolean accept(File dir, String name) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_96">  96</a>                                 return name.endsWith("jar");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_97">  97</a>                         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_98">  98</a>                 });
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_99">  99</a>                  
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_100"> 100</a>                 if(fileNameList.length==0) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_101"> 101</a>                         throw new NoClassDefFoundError("Koreanre EAI jar not exist ! ");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_102"> 102</a>                 }else {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_103"> 103</a>                         Arrays.sort(fileNameList);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_104"> 104</a>                         String oldVersion = jarName.replace("\\", "/").substring(jarName.replace("\\", "/").lastIndexOf('/') + 1);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_105"> 105</a>                         String newVersion = fileNameList[fileNameList.length-1].getPath().replace("\\", "/");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_106"> 106</a>                         System.out.println(" > OLD : " + oldVersion );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_107"> 107</a>                         System.out.println(" > NEW : " + newVersion.substring(newVersion.lastIndexOf('/') + 1));
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_108"> 108</a>                         if(oldVersion.equals(newVersion.substring(newVersion.lastIndexOf('/') + 1)))
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_109"> 109</a>                         {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_110"> 110</a>                                 System.out.println(" > is New Version");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_111"> 111</a>                                 isNweVersion = true;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_112"> 112</a>                         }else {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_113"> 113</a>                                 System.out.println(" > is Not New Version");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_114"> 114</a>                                 isNweVersion = false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_115"> 115</a>                         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_116"> 116</a>                 }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_117"> 117</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_118"> 118</a>                 return isNweVersion;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_119"> 119</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_120"> 120</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_121"> 121</a>         /**
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_122"> 122</a>          * Method를 실행 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_123"> 123</a>          * @param className
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_124"> 124</a>          * @param methodName
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_125"> 125</a>          * @param param
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_126"> 126</a>          * @return
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_127"> 127</a>          * @throws ClassNotFoundException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_128"> 128</a>          * @throws NoSuchMethodException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_129"> 129</a>          * @throws SecurityException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_130"> 130</a>          * @throws InstantiationException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_131"> 131</a>          * @throws IllegalAccessException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_132"> 132</a>          * @throws IllegalArgumentException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_133"> 133</a>          * @throws InvocationTargetException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_134"> 134</a>          */
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_135"> 135</a>         private String execMethod(String className, String methodName, String param) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_136"> 136</a>                 System.out.println("\n>> Start exec method ! " ); 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_137"> 137</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_138"> 138</a>                 ClassLoader cl = Thread.currentThread().getContextClassLoader();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_139"> 139</a>                 Class<?> clazz = cl.loadClass(className);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_140"> 140</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_141"> 141</a>                 Method m = clazz.getMethod(methodName, param.getClass() );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_142"> 142</a>             m.setAccessible(true);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_143"> 143</a>             
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_144"> 144</a>             System.out.println(" > Classd Name : " + className);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_145"> 145</a>             System.out.println(" > Method Name : " + methodName);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_146"> 146</a>             System.out.println(" > Params Value : " + param);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_147"> 147</a>             System.out.println(" > Return Type : " + m.getReturnType());
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_148"> 148</a>             
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_149"> 149</a>             if (m.getReturnType() != String.class) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_150"> 150</a>                 System.out.println(" > Return type Stirng only : " + m.getReturnType() );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_151"> 151</a>                 throw new NoSuchMethodException(methodName);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_152"> 152</a>             }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_153"> 153</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_154"> 154</a>             if (m.getModifiers() == 9) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_155"> 155</a>                 System.out.println(" > Not allowed Static method : " + m.getModifiers() );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_156"> 156</a>                 throw new NoSuchMethodException(methodName);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_157"> 157</a>             }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_158"> 158</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_159"> 159</a>             if (m.getModifiers() != 1) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_160"> 160</a>                 System.out.println(" > Public method only : " + m.getModifiers() );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_161"> 161</a>                 throw new NoSuchMethodException(methodName);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_162"> 162</a>             }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_163"> 163</a>            
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_164"> 164</a>            Object bbb = clazz.newInstance();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_165"> 165</a>             String returnMsg = "";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_166"> 166</a>         returnMsg = (String)m.invoke(bbb , new Object[] { param });
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_167"> 167</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_168"> 168</a>             return returnMsg;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_169"> 169</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_170"> 170</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_171"> 171</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_172"> 172</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_173"> 173</a>         /**
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_174"> 174</a>          *  해당 디렉토리의 최신 버전의 jar를 적용한다. 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_175"> 175</a>          * @param dir
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_176"> 176</a>          * @throws NoSuchMethodException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_177"> 177</a>          * @throws SecurityException
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_178"> 178</a>          */
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_179"> 179</a>         private void loadJar(final String dir) throws NoSuchMethodException, SecurityException {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_180"> 180</a>                 System.out.println("\n>> LoadJar ");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_181"> 181</a>                 final URLClassLoader loader = (URLClassLoader)Thread.currentThread().getContextClassLoader();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_182"> 182</a>                 final Method method = URLClassLoader.class.getDeclaredMethod("addURL", new Class[]{URL.class});
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_183"> 183</a>                 method.setAccessible(true);
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_184"> 184</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_185"> 185</a>                 new File(dir).listFiles(new FileFilter() {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_186"> 186</a>             public boolean accept(File jar) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_187"> 187</a>                 if( jar.toString().toLowerCase().contains(".jar") ){
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_188"> 188</a>                     try{
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_189"> 189</a>                         if(isLoadNewVersionJar(dir, jar.toString())) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_190"> 190</a>                                 method.invoke(loader, new Object[]{jar.toURI().toURL()});
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_191"> 191</a>                                 System.out.println(" > " + jar.toURI() + " is loaded.");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_192"> 192</a>                         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_193"> 193</a>                         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_194"> 194</a>                     }catch(Exception e){
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_195"> 195</a>                         System.out.println(jar.toURI() + " can't load.");
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_196"> 196</a>                     }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_197"> 197</a>                 }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_198"> 198</a>                                 return false;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_199"> 199</a>             }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_200"> 200</a>         });
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_201"> 201</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_202"> 202</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-7c977efbe54adde80c1866152cb9d25794d132bc_203"> 203</a> }
    ```
    
    <span class="anchor" id="bkmrk-"></span>
- 호출을 받는 소스<span class="anchor" id="bkmrk--1"></span><span class="anchor" id="bkmrk--2"></span><span class="anchor" id="bkmrk--3"></span><span class="anchor" id="bkmrk--4"></span><span class="anchor" id="bkmrk--5"></span><span class="anchor" id="bkmrk--6"></span><span class="anchor" id="bkmrk--7"></span><span class="anchor" id="bkmrk--8"></span><span class="anchor" id="bkmrk--9"></span><span class="anchor" id="bkmrk--10"></span><span class="anchor" id="bkmrk--11"></span><span class="anchor" id="bkmrk--12"></span><span class="anchor" id="bkmrk--13"></span><span class="anchor" id="bkmrk--14"></span><span class="anchor" id="bkmrk--15"></span><span class="anchor" id="bkmrk--16"></span><span class="anchor" id="bkmrk--17"></span><span class="anchor" id="bkmrk--18"></span><span class="anchor" id="bkmrk--19"></span><span class="anchor" id="bkmrk--20"></span><span class="anchor" id="bkmrk--21"></span><span class="anchor" id="bkmrk--22"></span><span class="anchor" id="bkmrk--23"></span><div class="highlight java"><div class="highlight java"><div class="codearea" dir="ltr" lang="en">[줄 번호 보이기/숨기기](http://web.joang.com:9000/jcook/DynamicJarLoading)</div></div></div>```
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_1">   1</a> package kr.co.koreanre.eai;
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_2">   2</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_3">   3</a> public class execEaiFunctionClass {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_4">   4</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_5">   5</a>         public execEaiFunctionClass() {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_6">   6</a>                 System.out.println(" > Init #1" );
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_7">   7</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_8">   8</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_9">   9</a>         public String execMathod( String obj ) {
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_10">  10</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_11">  11</a>                 String reString = new String();
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_12">  12</a>         
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_13">  13</a>                 return reString + "= called test1";
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_14">  14</a>                 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_15">  15</a>         }
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_16">  16</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5d0ae0dc3311c339b625a49d4c880efc2674b906_17">  17</a> }
    ```
    
    <span class="anchor" id="bkmrk--24"></span>
- 호출을 받는 곳 pom.xml<span class="anchor" id="bkmrk--25"></span><span class="anchor" id="bkmrk--26"></span><span class="anchor" id="bkmrk--27"></span><span class="anchor" id="bkmrk--28"></span><span class="anchor" id="bkmrk--29"></span><span class="anchor" id="bkmrk--30"></span><span class="anchor" id="bkmrk--31"></span><span class="anchor" id="bkmrk--32"></span><span class="anchor" id="bkmrk--33"></span><span class="anchor" id="bkmrk--34"></span><span class="anchor" id="bkmrk--35"></span><span class="anchor" id="bkmrk--36"></span><span class="anchor" id="bkmrk--37"></span><span class="anchor" id="bkmrk--38"></span><span class="anchor" id="bkmrk--39"></span><span class="anchor" id="bkmrk--40"></span><span class="anchor" id="bkmrk--41"></span><span class="anchor" id="bkmrk--42"></span><span class="anchor" id="bkmrk--43"></span><span class="anchor" id="bkmrk--44"></span><span class="anchor" id="bkmrk--45"></span><span class="anchor" id="bkmrk--46"></span><span class="anchor" id="bkmrk--47"></span><span class="anchor" id="bkmrk--48"></span><span class="anchor" id="bkmrk--49"></span><span class="anchor" id="bkmrk--50"></span><span class="anchor" id="bkmrk--51"></span><span class="anchor" id="bkmrk--52"></span><span class="anchor" id="bkmrk--53"></span><span class="anchor" id="bkmrk--54"></span><span class="anchor" id="bkmrk--55"></span><span class="anchor" id="bkmrk--56"></span><span class="anchor" id="bkmrk--57"></span><span class="anchor" id="bkmrk--58"></span><span class="anchor" id="bkmrk--59"></span><span class="anchor" id="bkmrk--60"></span><span class="anchor" id="bkmrk--61"></span><span class="anchor" id="bkmrk--62"></span><span class="anchor" id="bkmrk--63"></span><span class="anchor" id="bkmrk--64"></span><span class="anchor" id="bkmrk--65"></span><span class="anchor" id="bkmrk--66"></span><span class="anchor" id="bkmrk--67"></span><span class="anchor" id="bkmrk--68"></span><span class="anchor" id="bkmrk--69"></span><span class="anchor" id="bkmrk--70"></span><span class="anchor" id="bkmrk--71"></span><span class="anchor" id="bkmrk--72"></span><span class="anchor" id="bkmrk--73"></span><span class="anchor" id="bkmrk--74"></span><span class="anchor" id="bkmrk--75"></span><div class="highlight python"><div class="highlight python"><div class="codearea" dir="ltr" lang="en">  
    </div></div></div>```
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_1">   1</a> <project xmlns="http://maven.apache.org/POM/4.0.0"
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_2">   2</a>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_3">   3</a>         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_4">   4</a>         <modelVersion>4.0.0</modelVersion>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_5">   5</a>         <groupId>kr.co.koreanre.eai</groupId>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_6">   6</a>         <artifactId>kr.co.koreanre.eai</artifactId>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_7">   7</a>         <version>202110280920</version>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_8">   8</a>         <name>Test1</name>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_9">   9</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_10">  10</a>         <build>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_11">  11</a>                 <pluginManagement>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_12">  12</a>                         <plugins>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_13">  13</a>                                 <plugin>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_14">  14</a>                                         <groupId>org.apache.maven.plugins</groupId>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_15">  15</a>                                         <artifactId>maven-resources-plugin</artifactId>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_16">  16</a>                                         <version>2.3</version>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_17">  17</a>                                 </plugin>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_18">  18</a>                                 <plugin>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_19">  19</a>                                         <artifactId>maven-resources-plugin</artifactId>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_20">  20</a>                                         <version>3.0.2</version>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_21">  21</a>                                         <executions>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_22">  22</a>                                                 <execution>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_23">  23</a>                                                         <id>copy-resource-one</id>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_24">  24</a>                                                         <phase>install</phase>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_25">  25</a>                                                         <goals>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_26">  26</a>                                                                 <goal>copy-resources</goal>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_27">  27</a>                                                         </goals>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_28">  28</a>                                                         <configuration>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_29">  29</a>                                                                 <outputDirectory>${basedir}/../com.exec/src/main/resources/deployFilder</outputDirectory>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_30">  30</a>                                                                 <resources>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_31">  31</a>                                                                         <resource>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_32">  32</a>                                                                                 <directory>${basedir}/target</directory>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_33">  33</a>                                                                                 <includes>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_34">  34</a>                                                                                         <include>*.jar</include>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_35">  35</a>                                                                                 </includes>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_36">  36</a>                                                                         </resource>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_37">  37</a>                                                                 </resources>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_38">  38</a>                                                         </configuration>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_39">  39</a>                                                 </execution>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_40">  40</a>                                         </executions>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_41">  41</a>                                 </plugin>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_42">  42</a>                         </plugins>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_43">  43</a>                 </pluginManagement>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_44">  44</a>         </build>
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_45">  45</a> 
    <a href="http://web.joang.com:9000/jcook/DynamicJarLoading#CA-5c319cbe52754da8d447de65c11677fe699e7a01_46">  46</a> </project>
    ```