Ошибка Java Class.forName - PullRequest
       0

Ошибка Java Class.forName

3 голосов
/ 27 апреля 2011

Я не могу заставить Class.forName(String) не бросить ClassNotFoundException. Например, этот код, который является сокращенной копией кода непосредственно с веб-сайта Sun , вызывает исключение.

import java.lang.reflect.*;
class A {}

public class Test {
   public static void main(String args[])
   {
      try {
         Class cls = Class.forName("A");
      }
      catch (Throwable e) {
         System.err.println(e);
      }
   }
}

Производит

java.lang.ClassNotFoundException: A

Я использую Eclipse 1.3.2.20110218-0812 в Windows XP SP3. Кто-нибудь знает, чего мне не хватает?

Ответы [ 4 ]

12 голосов
/ 27 апреля 2011

Вы должны добавить имя пакета класса Test к A, например, если Test находится в пакете «test», вам потребуется следующее:

Class cls = Class.forName("test.A");
1 голос
/ 27 апреля 2011

Class.forName функция нуждается в полностью указанном пути к классу.Поэтому, даже если вы импортировали ArrayList из java.util, вы должны использовать:

Class myClass = Class.forName("java.util.ArrayList");

, это ваша проблема.

1 голос
/ 27 апреля 2011

Ваш фрагмент отлично работает для меня.

Вот демонстрация на ideone.com: http://ideone.com/IBjKl

Обратите внимание, что вам нужно предоставить полное имя класса, чтобы загрузчик класса мог его найти. То есть, если A на самом деле находится в каком-то пакете, вам нужно сделать forName("your.package.A") для его работы.

(обратите внимание, что импорт не требуется.)

0 голосов
/ 27 апреля 2011

Чтобы это работало, вам нужно иметь класс с именем "A" в вашем пути к классам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...