2015-02-12 28 views
-1

我在Net Beans中使用Swing。我有我自己的jar,裏面包含類和方法。我將使用JAVA Reflection API調用這些類和方法,但在此之前,我想在運行時將我的Jar加載到類路徑中。我有一個J按鈕,並點擊,我得到罐子名稱和罐子路徑。但是我無法在運行時將Jar加載到類路徑中。有一些鏈接,但沒有幫助。請給我提供一個簡單的例子。我應該將我的jar加載到classpath中。這是我唯一的問題,我會照顧的。請幫忙。如何通過Java編碼在運行時將My Jar加載到ClassPath中?

+0

您需要使用某種'Classloader',看看[ 'URLClassloader'](http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html)。只要記住,當你想要加載這些類時,你將需要使用這個類加載器來完成它,它不會通過你已經使用的默認類加載機制來實現。 – MadProgrammer 2015-02-12 05:41:41

回答

3

您可以通過使用ClassLoader的加載在運行時類,看看URLClassLoader例如

File yourJarFile = ...; 
URLClassLoader classLoader = new URLClassLoader(new URL[]{yourJarFile.toURI().toURL()}); 

這一操作將允許您加載類和實例他們...

Class class = classLoader.loadClass("fully.qualified.packagename.to.your.AwesomeClass"); 

然後,您可以使用類似實例他們...

Object obj = class.newInstance(); 

或反射如果你想使用特定的構造函數。請記住,您將無法在當前類加載器上下文中直接引用這些類,因爲當前類加載器對它們一無所知

+0

令人驚歎的......工作優秀....非常感謝你的精彩答案......但在'Class class = classLoader.loadClass(「fully.qualified.packagename.to.your.AwesomeClass」) ;」我們必須手動給出類名....但是想在運行時手動加載這個類,並且我也得到了使用此代碼的解決方案'JarFile jarFile = new JarFile(myJarFile.getAbsoluteFile());枚舉allEntries = jarFile.entries(); while(allEntries.hasMoreElements())JarEntry entry =(JarEntry)allEntries.nextElement(); ' – Sreepad 2015-02-13 08:01:25

+0

這取決於你想要做什麼。當我這樣做時,我通常會做某種插件,所以我創建了一個text/xml,我可以使用getResource並配置我想要加載的入門類以開始使用 – MadProgrammer 2015-02-13 08:57:04

相關問題