Почему Class.forName () не работает для меня? - PullRequest
2 голосов
/ 19 февраля 2009

Я пытаюсь создать экземпляр класса из переменной и написал тестовый код. Но, к сожалению, это не работает. Вот код:

Object co1 = new CommandDownloadHttp();
Class cc1 = Class.forName("CommandDownloadHttp");
Object co = cc1.newInstance();

К сожалению, во второй строке происходит сбой с java.lang.ClassNotFoundException.

Подскажите, пожалуйста, что я делаю не так?

Ответы [ 2 ]

7 голосов
/ 19 февраля 2009

Является ли CommandDownloadHttp полным именем класса, т. Е. У него нет пакета? Если имеет пакет, включите в него:

Class.forName("foo.bar.CommandDownloadHttp");

(я полагаю, есть более веская причина, чтобы вы делали это в своем реальном коде, кстати - очевидно, в этом случае вам на самом деле не нужно извлекать класс с помощью отражения:)

3 голосов
/ 19 февраля 2009

Ваш класс в пакете? И этот пакет импортируется? Так что это работает в строке 1. Но вам нужно полное имя в Class.forName («my.package.to.CommandDownloadHttp»).

...