欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解

 更新時(shí)間:2017年09月08日 15:41:40   作者:357029540  
這篇文章主要介紹了java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解的相關(guān)資料,希望通過(guò)本文能幫助到大家,需要的朋友可以參考下

java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解

前言:

  在項(xiàng)目開發(fā)過(guò)程中我們有時(shí)候需要?jiǎng)討B(tài)的添加外部jar包,但是具體的業(yè)務(wù)需求還沒有遇到過(guò),因?yàn)槿绻麆?dòng)態(tài)添加外部jar包后,我們就需要修改業(yè)務(wù)代碼,而修改代碼就需要重新啟動(dòng)服務(wù),那樣好像就沒有必要?jiǎng)討B(tài)添加外部jar包了,怎么樣才能不重新啟動(dòng)服務(wù)器就可以使用最新的代碼我沒有找到方法,如果各位知道的話給我點(diǎn)建議,回歸主題,實(shí)現(xiàn)動(dòng)態(tài)添加外部jar包到classpath的方法如下:

String beanClassName = "com.dynamic.DynamicBean3"; 
Map<String,Class<?>> classMap = new HashMap<String,Class<?>>(); 
String filePath = "f:\\testDynamicBean-1.0-SNAPSHOT.jar"; 
String uFilePath = "file:f:\\testDynamicBean-1.0-SNAPSHOT.jar"; 
 
URL url1 = new URL(uFilePath); 
URLClassLoader urlClassLoader = new URLClassLoader(new URL[] { url1 }, Thread.currentThread() 
        .getContextClassLoader()); 
List<JarEntry> jarEntryList = new ArrayList<>(); 
JarFile jarFile = new JarFile(filePath); 
Enumeration<JarEntry> jarEntryEnumeration = jarFile.entries(); 
while (jarEntryEnumeration.hasMoreElements()){ 
   JarEntry jarEntry = jarEntryEnumeration.nextElement(); 
   if (//jarEntry.getName().startsWith(filePath) && 
      jarEntry.getName().endsWith(".class")) { 
        jarEntryList.add(jarEntry); 
      } 
    } 
 
   for (JarEntry entry : jarEntryList) { 
      String className = entry.getName().replace('/', '.'); 
      className = className.substring(0, className.length() - 6); 
      if(!classMap.containsKey(beanClassName)){ 
        Class<?> loadClass = urlClassLoader.loadClass(className); 
        classMap.put(className,loadClass); 
      } 
    } 
    try { 
      Method printMethod = classMap.get(beanClassName).getMethod("printBean3"); 
      printMethod.invoke(classMap.get(beanClassName).newInstance()); 
    } catch (IllegalAccessException e) { 
      e.printStackTrace(); 
    } catch (InvocationTargetException e) { 
      e.printStackTrace(); 
    } catch (NoSuchMethodException e) { 
      e.printStackTrace(); 
    } catch (InstantiationException e) { 
      e.printStackTrace(); 
    } 

如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • java實(shí)現(xiàn)對(duì)服務(wù)器的自動(dòng)巡檢郵件通知

    java實(shí)現(xiàn)對(duì)服務(wù)器的自動(dòng)巡檢郵件通知

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)對(duì)服務(wù)器的自動(dòng)巡檢郵件通知,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring Cloud Gateway層限流實(shí)現(xiàn)過(guò)程

    Spring Cloud Gateway層限流實(shí)現(xiàn)過(guò)程

    這篇文章主要介紹了Spring Cloud Gateway層限流實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • 面試中遇到的java逃逸分析問(wèn)題

    面試中遇到的java逃逸分析問(wèn)題

    這篇文章主要介紹了面試中遇到的java逃逸分析問(wèn)題,逃逸分析(Escape Analysis)簡(jiǎn)單來(lái)講就是,Java Hotspot 虛擬機(jī)可以分析新創(chuàng)建對(duì)象的使用范圍,并決定是否在 Java 堆上分配內(nèi)存的一項(xiàng)技術(shù)。,需要的朋友可以參考下
    2019-06-06
  • 如何修改logback.xml配置文件在resource以外的位置

    如何修改logback.xml配置文件在resource以外的位置

    這篇文章主要介紹了如何修改logback.xml配置文件在resource以外的位置,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • List、Map、Set接口在Java中的存取元素特點(diǎn)詳細(xì)探討

    List、Map、Set接口在Java中的存取元素特點(diǎn)詳細(xì)探討

    在Java編程語(yǔ)言中集合框架是處理對(duì)象組的重要工具,主要包括List、Set和Map接口,這些接口及其實(shí)現(xiàn)類提供了豐富的功能,這篇文章主要給大家介紹了關(guān)于List、Map、Set接口在Java中的存取元素特點(diǎn),需要的朋友可以參考下
    2024-08-08
  • Java生成及校驗(yàn)token的實(shí)踐

    Java生成及校驗(yàn)token的實(shí)踐

    Token 的生成和校驗(yàn)機(jī)制為應(yīng)用程序提供了一種安全的身份驗(yàn)證和授權(quán)方式,可以用于用戶認(rèn)證、API 訪問(wèn)控制等場(chǎng)景,本文主要介紹了Java生成及校驗(yàn)token的實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-04-04
  • Java移除無(wú)效括號(hào)的方法實(shí)現(xiàn)

    Java移除無(wú)效括號(hào)的方法實(shí)現(xiàn)

    本文主要介紹了Java移除無(wú)效括號(hào)的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java簡(jiǎn)單驗(yàn)證身份證功能示例

    Java簡(jiǎn)單驗(yàn)證身份證功能示例

    這篇文章主要介紹了Java簡(jiǎn)單驗(yàn)證身份證功能,涉及java針對(duì)字符串的截取、判斷相關(guān)操作技巧,需要的朋友可以參考下
    2017-06-06
  • Java中的自旋鎖與阻塞鎖詳解

    Java中的自旋鎖與阻塞鎖詳解

    這篇文章主要介紹了Java中的自旋鎖與阻塞鎖詳解,阻塞鎖是指當(dāng)線程嘗試獲取鎖失敗時(shí),線程進(jìn)入阻塞狀態(tài),直到接收信號(hào)后被喚醒,阻塞或者喚醒一個(gè)Java線程需要操作系統(tǒng)切換CPU?狀態(tài)來(lái)完成,這種狀態(tài)轉(zhuǎn)換?需要耗費(fèi)處理器時(shí)間,需要的朋友可以參考下
    2023-10-10
  • Java并發(fā)工具類之CountDownLatch詳解

    Java并發(fā)工具類之CountDownLatch詳解

    這篇文章主要介紹了Java并發(fā)工具類之CountDownLatch詳解,CountDownLatch可以使一個(gè)獲多個(gè)線程等待其他線程各自執(zhí)行完畢后再執(zhí)行,CountDownLatch可以解決那些一個(gè)或者多個(gè)線程在執(zhí)行之前必須依賴于某些必要的前提業(yè)務(wù)先執(zhí)行的場(chǎng)景,需要的朋友可以參考下
    2023-12-12

最新評(píng)論