2014-09-01 8 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, вы также можете сообщить мне. Мне не нужно получать classFiles или загружать jarfile, если есть какой-либо другой способ.

Также вы можете должны знать, что каждый класс имеет иметь конструктор без параметров
спасибо за помощь :)

+1

см http://docs.oracle.com/javase/tutorial/reflect/member/ctorInstance.html –

+1

Вы должны действительно прочитать документы перед тем, как задавать вопросы. Документация действительно отвечает на это. Это то же самое для вашего вопроса 'Class.getResource'. – Seelenvirtuose

+0

@Scary Wombat i ve a ClassFile не класс. Я не знаю, как получить класс, который представлен ClassFile. Это то, что я хочу знать. Как сделать экземпляры, которые я уже знал, но я не знаю, как сделать это с ClassFiles – Basti

ответ

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

+0

Это хорошо. Пожалуйста, подумайте о принятии и/или голосовании на голосование. –

+0

Я знаю, что это старая нить, но можете ли вы снова помочь мне? Каков синтаксис имени класса? я всегда получаю classnotfoundexception, потому что он не может найти мой класс JavaPlugin.class в плагине пакета (plugin.JavaPlugin.class - это то, что я использовал в качестве параметра) – Basti