Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Class.forName() примерник работает не по книге


Автор: AugMaster 10.11.2012, 01:20
Здравствуйте. Изучаю Java по книге "Thinking in Java" 4ое издание
Столкнулся с непоняткой с примером книги (стр 355-356)
Код

package typeinfo;
import static myPack.print_.*;

class Candy {
    static {print("Загрузка класса Candy");}
}
class Gum {
    static {print("Загрузка класса Gum");}        
}
class Cookie {
    static {print("Загрузка класса Cookie");}
}

public class SweetShop {

    public static void main(String[] args) {
        print("В методе main()");
        new Candy();
        print("После создания объекта Candy");
        //Gum n = new Gum();//даже с раскомментированной строкой пишет "Класс Gum не был найден"
        try {
            Class.forName("Gum");            
        } catch (ClassNotFoundException e) {
            print("Класс Gum не был найден "+ e);
        }
        print("После вызова Class.forName(\"Gum\")");
        new Cookie();
        print("После создания объекта Cookie");
        

    }

}

вот что выводит :
В методе main()
Загрузка класса Candy
После создания объекта Candy
Класс Gum не был найден java.lang.ClassNotFoundException: Gum
После вызова Class.forName("Gum")
Загрузка класса Cookie
После создания объекта Cookie

по книге (да и по логике) должно подгружать класс Gum и выводить сообщение "Загрузка класса Gum" , также исключения не должно быть.
Единственное предположение которое у меня есть - может это быть из-за того что книга написана под jre5, а я использую jre6 ?
Может ли кто-то ответить на этот вопрос (гугл спрашивал, выводит примеры из книги, не более)

код print'а:
Код

package myPack;
public class print_ {
    public static void print(Object obj){
        System.out.println(obj);
    }
}


Автор: AugMaster 10.11.2012, 01:43
решение нашлось на следующих нескольких страницах.
надо было вместо
Class.forName("Gum");
использовать
Class.forName("typeinfo.Gum");
то есть пририсовать имя package. Всем спасибо, все работает

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)