利用java怎么將外部jar包添加到lasspath?針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)建站主要從事成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)北鎮(zhèn),十余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220
java動(dòng)態(tài)添加外部jar包到classpath的實(shí)例詳解
前言:
在項(xiàng)目開(kāi)發(fā)過(guò)程中我們有時(shí)候需要?jiǎng)討B(tài)的添加外部jar包,但是具體的業(yè)務(wù)需求還沒(méi)有遇到過(guò),因?yàn)槿绻麆?dòng)態(tài)添加外部jar包后,我們就需要修改業(yè)務(wù)代碼,而修改代碼就需要重新啟動(dòng)服務(wù),那樣好像就沒(méi)有必要?jiǎng)討B(tài)添加外部jar包了,怎么樣才能不重新啟動(dòng)服務(wù)器就可以使用最新的代碼我沒(méi)有找到方法,如果各位知道的話給我點(diǎn)建議,回歸主題,實(shí)現(xiàn)動(dòng)態(tài)添加外部jar包到classpath的方法如下:
String beanClassName = "com.dynamic.DynamicBean3"; Map> classMap = new HashMap >(); 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 jarEntryList = new ArrayList<>(); JarFile jarFile = new JarFile(filePath); Enumeration 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(); }
關(guān)于利用java怎么將外部jar包添加到lasspath問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。