Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос о Java  (Прочитано 5743 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Дмитрий Сергеевич
Гость
« : 22-11-2004 18:19 » 

На днях решил установить себе J2sdk 1.4.2.06, и вроде установил без проблем, стал проверять а он мне на команду Java имя_файла.class выдает Exception in thread "main" java.lang.NoClassDefFoundError имя_файла/class. Наконец вопрос я дурак или лыжи не едут.
Записан
blind rain
Гость
« Ответ #1 : 25-11-2004 18:44 » 

В свободное время пытаюсь изучать Java.
Возможно ламерский совет:
Java ищет классы по путям, указанным в переменной CLASS_PATH или в ключе -cp при запуске. Я и эту переменную настроил и в реестре, где встретил ссылки подправил на мой рабочий каталог, где классы собираю.
Имя класса при запуске должно быть с полным указанием его пространства имен.
Записан
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #2 : 26-11-2004 06:32 » 

Дмитрий Сергеевич, все очень просто, это самая частая ошибка начинающих. Дело в том, что только компилятор Java (javac) работает с файловой системой, а все остальные программы работают с именами классов. Поэтому при вызове интерпретатора java суффикс .class добавлять не надо. То есть, если у Вас был исходник MyProg.java Вы его скомпилировали командой:
javac MyProg.java
получили исполняемый класс MyProg.class и исполняете его командой:
java MyProg

Для того, чтобы понять, почему Вы получили такое странное сообщение об ошибке, надо знать, что классы в языке для того, чтобы избежать конфликта имен всегда находятся внутри package-ей. При этом полное имя класса (full-qualified class name) строится как package_name.class_name
Cоответственно, в Вашем случае имя_файла было воспринято как имя package, а слово class - как имя класса.
Далее, классы и package-и однозначно отображаются на файлы и директории соответственно. Если Вам нужно более детальное объяснение этого, а также того, что делает CLASSPATH (что, на самом деле, очень просто), ответьте в этой теме или через ЛС, и я помещу детальное объяснение, возможно, даже в виде статьи.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
Sashok
Молодой специалист

us
Offline Offline
Пол: Мужской

« Ответ #3 : 26-11-2004 06:36 » 

Цитата: blind rain
В свободное время пытаюсь изучать Java.
Возможно ламерский совет:
Java ищет классы по путям, указанным в переменной CLASS_PATH или в ключе -cp при запуске. Я и эту переменную настроил и в реестре, где встретил ссылки подправил на мой рабочий каталог, где классы собираю.
Имя класса при запуске должно быть с полным указанием его пространства имен.
blind rain, не CLASS_PATH , а CLASSPATH. И имя класса НЕ ОБЯЗАТЕЛЬНО должно быть с  полным указанием его пространства имен.

Сейчас я немного тороплюсь, если хотите детальное объяснение - дайте знать. Возможно, слеплю статью, или, по крайней мере, дам детальный ответ в этой теме.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
blind rain
Гость
« Ответ #4 : 26-11-2004 18:48 » 

Спасибо!
Конечно, желательно поподробнее.
Я когда SDK 1.4.x установил, и по книжке упражнения стал делать, сразу на подобную проблему натолкнулся. В книжке, где-то между всем прочим было написано, что Java ищет не по win PATH переменной а по CLASSPATH, но в книжке быстро не найдешь. Я тыком что-то шарил, и в реестре подправил, и CLASSPATH (все-таки ошибся), и через FAR с ключами настроил запуск компилятора и Java. Что-то из этого помогло. И конечно, хотелось бы понять как надо и почему.
Записан
Дмитрий Сергеевич
Гость
« Ответ #5 : 07-12-2004 11:32 » 

Огроменное спасибо Вам всем , наконец я сдвинулся с мертвой точки. Еще раз спасибо.
Записан
annarv
Гость
« Ответ #6 : 13-11-2005 09:11 » 

А если можно узнать этот подробный ответ(или статья) существует? Не могу разобраться с CLASSPATH. Как нужно определять этот путь? В книге пишут что через него определяеться путь ко всем пакетам в java. Наверное поэтому у меня программа не работает. Ошибка, что нет такого пакета.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines