2014-09-01 99 views
0

我有一個包含jar文件的文件夾。我加載所有這些文件,然後加載所有在jar文件中的類文件。現在我想創建一個類文件的每個類的實例。獲取ClassFile類的實例

ClassFile[] classFiles = loadClassFiles(); 
Object[] objects = new Object[classFiles.length]; 
for(int i = 0; i < classFiles.length; i++){ 
objects[i] = getNewInstanceOf(classfiles[i]); 
} 

這就是我到目前爲止。只有方法getNewInstaceOf(Classfile file)錯過。誰能告訴我如何做到這一點?

如果有更簡單的方法從jar文件加載所有類,也可以告訴我。如果還有其他方法,我不必獲取class文件或加載jar文件。

而且你可能應該知道,每類不具有不帶參數
感謝幫助:)構造

+1

看http://docs.oracle.com/javase/tutorial/reflect/member/ctorInstance.html – 2014-09-01 08:21:14

+1

在提問之前,你應該真的閱讀文檔。文檔真的回答了它。你的'Class.getResource'問題是一樣的。 – Seelenvirtuose 2014-09-01 08:28:30

+0

@Scary Wombat我有一個ClassFile不是一個類。我不知道如何獲得由ClassFile表示的類。這就是我想知道的。如何使我已經知道的實例,但我不知道如何使它從ClassFiles – Basti 2014-09-01 08:36:49

回答

0

如果你知道你想要的類的名稱,你可以使用

File file = getJarFileToLoadFrom(); 
String lcStr = getNameOfClassToLoad(); 
URL jarfile = new URL("jar", "","file:" + file.getAbsolutePath()+"!/");  
URLClassLoader cl = URLClassLoader.newInstance(new URL[] {jarfile }); 
Class loadedClass = cl.loadClass(lcStr); 
+0

gr8中,這就是我正在尋找的謝謝! :D這是完美的:) – Basti 2014-09-01 09:05:57

+0

這很好。請考慮接受和/或投票我的答案。 – 2014-09-02 00:06:39

+0

我知道這是一個古老的線程,但你能再次幫助我嗎? classname的語法是什麼?我總是得到一個classnotfoundexception,因爲它無法在包插件中找到我的類JavaPlugin.class(plugin.JavaPlugin.class就是我用作參數) – Basti 2014-10-22 12:22:23