2014-09-01 114 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