Java: загрузка внешних классов - PullRequest
1 голос
/ 02 декабря 2011

Как я могу загрузить файл внешнего класса? Я нашел следующий пример, но он не работает.

       //string containing full path of external class file
       String class1 = "...\\Example.class"
       Class loadClass = Class.forName(class1);
       loadClass.main(args);

Есть идеи как загрузить? Обычный случай загрузки класса внутри одного проекта прост:

           Example.main(args)

Как это сделать для внешних классов?

Ответы [ 2 ]

2 голосов
/ 02 декабря 2011

Class.forName () принимает в качестве аргумента полное имя класса, а не путь. Пример "com.example.MyApp" http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Class.html#forName(java.lang.String) Вместо этого посмотрите на установку classpath.

Редактировать: или, если вам нужно динамически загрузить класс во время выполнения на основе параметра, изучите возможность использования пользовательского загрузчика классов. http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ClassLoader.html

0 голосов
/ 02 декабря 2011

Ваш файл .class должен находиться в пути к классам в правильном месте.

Это означает, что если этот файл .class имеет объявление пакета package p1.p2, он должен быть помещен в путь к классу,по пути /p1/p2/Whwhat.class.Если ваш файл .class находится внутри (правильно построенного) файла .jar, то он уже находится в хорошей структуре папок внутри .jar, вам просто нужно поместить .jar в корень вашего пути к классам.

Кроме того, удалите .class из вашего вызова, аргумент должен быть что-то вроде:

Class<?> clazz = Class.forName("java.lang.String");
...