2013-09-17 3 views
0

Я загрузил файл aspectJ.jar и извлек его во временную директорию (этот файл jar используется только для тестовых целей). У меня есть следующий код:Почему URLClassLoader не загружает класс?

public class TestUrlClassLoader { 
    public static void main(String [] args) throws MalformedURLException, ClassNotFoundException { 
     File file = new File("C:\\temp\\org\\aspectj\\lang\\JoinPoint.class"); 
     URLClassLoader loader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()}); 
     Class<?> aClass = loader.loadClass("org.aspectj.lang.JoinPoint"); 
     System.out.println(aClass.toString()); 
    } 
} 

Файл с JoinPoint класса существует, но я получаю ClassNotFoundException. Кто-нибудь может мне помочь?

ответ

1

Согласно Javadoc из URLClassLoader,

[...] (URLClassLoader) is used to load classes and resources from a search path of URLs referring to both JAR files and directories. Any URL that ends with a '/' is assumed to refer to a directory. Otherwise, the URL is assumed to refer to a JAR file which will be opened as needed. 

Вы должны удалить полный путь к JoinPoint.class и попытаться директорию, которую вы хотите добавить к классам, например,

File file = new File("C:\\temp"); 
URLClassLoader loader = URLClassLoader.newInstance(new URL[]{file.toURI().toURL()}); 

Ссылка на документацию: http://docs.oracle.com/javase/7/docs/api/java/net/URLClassLoader.html

Смежные вопросы