2015-10-23 1 views
0

я скомпилированный во время выполнения Java, файл в файловой системе, которая является очень простой класс:Как загрузить .class и вызвать один из его методов

public class Test { 

public static int res(int a, int b) { 
    return a*b; 
} 

}

теперь я просто хочу вызов метода разрешения от моего проекта (который будет баночка), но мой код производят java.lang.ClassNotFoundException: Test

и это, как я загрузил класс:

URL[] urls = new URL[] {new URL("file:///"+UtilOverriding.getFile1().replace("java", "class"))}; 
     URLClassLoader loader = new URLClassLoader(urls); 
     Class clazz = loader.loadClass("Test"); 
+0

http://stackoverflow.com/questions/11016092/how-to-load-classes-at-runtime-from-a-folder-or-jar http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamic-at-runtime http://stackoverflow.com/questions/16104605/dynamically-loading-jar-and-instanciate-an-object-of-a-loaded-class –

+0

Вы, кажется, заменяете расширение .java расширением .class.Серьезно, это не компиляция java.A java класс находится в байтовом коде, скомпилированном java-компилятором –

+0

@KumarAbhinav Я знаю спасибо, infact, о котором вы упоминаете, является загрузкой класса, а не java-файл компиляции (операция, которую я сделал до этого фрагмента кода) – Noomak

ответ

1

Когда вы укажете путь к классу, вы должны предоставить каталог , который является родительским для всех ваших пакетов. Попробуйте вместо этого.

new URL("file:///"+UtilOverriding.getFile1().getParent()}