| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Ошибка при выполнении программы |
| Автор: MekS 8.5.2006, 15:44 |
| Начал писать на Java. Написал "Hello world". Скомпилировал, а запустить не могу. Выдает Exception in thread "main" java.lang.NoSuchMethodError: main. В чем может быть причина? main в коде я указал. |
| Автор: powerOn 8.5.2006, 16:18 |
| ну давай, рассказывай, как запуск программы делаешь.... |
| Автор: Бонифаций 8.5.2006, 17:03 |
| покажите свой "hello world" в исходниках. main должен быть public static void main(String[] argv). Он точно такой? |
| Автор: MekS 9.5.2006, 10:01 | ||
Вот мой код |
| Автор: JUncle 9.5.2006, 11:45 |
| MekS, этот вопрос был первичным: Или неправильно указываешь имя класса, или classpath. Так что, колитесь |
| Автор: batigoal 9.5.2006, 17:52 |
Вроде я всегда args писал... Ну и строку запуска наконец покажи |
| Автор: powerOn 9.5.2006, 18:05 | ||||
Класс должен иметь модификатор public. Добавлено @ 18:06
А какая разница между arg и args?? Это на что влияет? |
| Автор: batigoal 9.5.2006, 18:13 |
А я вот не знаю, входит ли это в сигнатуру вызываемого метода. Щас попробую. Проверил - нет, не влияет. |
| Автор: ALKS 9.5.2006, 18:14 |
| ну на размер иcходника точно влияет |
| Автор: bougle 9.5.2006, 19:40 | ||||
| Сейчас сделал програмку в NetBeans, собрал ее в jar файл, а при попытке ее открытия вылазит окошечко "could not find main class" Я до этого просто из NetBeans запускал и все работало. Для интереса попробовал откомпилировать и запустить вышепреведенную програмку из командной строки. Ошибка такая же. Код я изменил, так что к нему уже не придерешься: HelloWorld.java
Набрал в cmd javac HelloWorld.java получил файл HelloWorld.class набрал java HelloWorld получил вот что:
Значит проблемы в кривоустановленной jvm? Я же вроде все правильно сделал? Добавлено @ 19:48 classpath..... эээ... Блин. Точно. Дело только в этом. |
| Автор: LSD 9.5.2006, 23:05 |
Нет не должен. Вообще этот код верный, проблема в том как его запускают. Ждем автора... |
| Автор: Бонифаций 9.5.2006, 23:15 |
похоже что вы компилируете одной версией явы (скажем 1.5) а пытаетесь выполнить совсем другйо более старой (скажем 1.4)- а нука нука покажите java -version там где вы пытаетесь выполнить программу, и vm: в netbeans в help->about>details |
| Автор: batigoal 10.5.2006, 09:31 |
Разве? |
| Автор: ALKS 10.5.2006, 10:04 |
http://java.sun.com/docs/books/tutorial/getStarted/application/main.html я не поленился и проверил - действительно работает прекрасно и без public. а я и не знал... |
| Автор: MekS 10.5.2006, 17:39 |
| Покопался в CLASSPATH, изменил , теперь выглядит так: %JAVA_HOME%\JRE\LIB\rt.jar;D:\Tomcat\common\lib\servlet.jar;C:\j2sdk1.4.2_01\lib;C:\j2sdk1.4.2_01;D:\Test PATH: C:\j2sdk1.4.2_01\bin; D:\Test Ошибка, правда, теперь такая: Exeption in thread main java.lang.NoClassDefFoundError: HelloWorld java -version выдает: java version "1.4.2_01" JAVA 2 Runtime Enviroment, Standart Edition (build 1.4.2_01-b06) JAVA HotSpot Client VM (build 1.4.2_01-b06, mixed mode) может ошибка в настройке ClassPath? Добавлено @ 17:43 компилирую как: javac HelloWorld.java Вызываю: java Helloworld |
| Автор: powerOn 10.5.2006, 17:48 | ||
наверное вызавать надо java HelloWorld так... Добавлено @ 17:48 хотя здесь все таки не в этом проблема... |
| Автор: MekS 10.5.2006, 17:54 | ||
Попробовал, эффект тот же. Добавлено @ 18:05 Получилось! Вызвал так: java -classpath HelloWorld Только теперь не знаю что надо прописать в CLASSPATH чтобы вызывать без ключа. |
| Автор: MekS 10.5.2006, 18:10 |
| т.е. так: java -classpath . HelloWorld |
| Автор: Alagert 11.5.2006, 11:12 |
Это у тебя происходит потому, что в classpath не добавлена текущая директория. Добавь в свой classpath \. теперь все должно быть пучком |
| Автор: Goganchic 27.1.2007, 12:42 |
| И как всегда проблема в настройках окружения Кстати, тут был пост про то, что компилится все жабой 1.5, а запускается 1.4. Ошибка будет только если ты используешь какие-то специфические методы, которых нет в старой версии JRE или же шаблоны, иначе все будет нормально. |