помогите начинающему!
начал учить яву, разбираю первую программу "Hello world!".
Создал файл HelloWorld.java c таким содержанием:
class HelloWorld{
public static void main(String [] args){
System.out.println("Hello world!");
}
}
Далее, компилятор создал файл HelloWorld.class.
А при запуске программа выдает такую ошибку:
d:\jdk1.4\bin\java HelloWorld.class
Exception in thread "main" java.lang.NoClassDefFoundError: hworld/class
Где тут ошибка?
Спасибо за ответ!
Дело в том, что запись HelloWorld.class интерпретируется при выполнении, как класс с именем "class" вложенный в пакет "HelloWorld"
т.е. JVM при запуске пытается найти класс "class" в папке "HelloWorld"
исправление ошибки - d:\jdk1.4\bin\java HelloWorld
Ошибка в том, что ты случайно затронул очень важную, но часто приносящую головную боль тему в Java - пакеты классов.
Дело в том, что запись HelloWorld.class интерпретируется при выполнении, как класс с именем "class" вложенный в пакет "HelloWorld"
т.е. JVM при запуске пытается найти класс "class" в папке "HelloWorld"
исправление ошибки - d:\jdk1.4\bin\java HelloWorld
Ты полностью прав! Спасибо, заработало! Интересно, а как же авторы руководства (которе я изучаю) эту ошибку упустили?:)
sdk1.5.0_06 установлен софт в директорию C:\Program Files\Java
Файл Hello2.java расположен в папке C:\First
Компилируется все ок, без ошибок создается файл Hello2.class
Я запускаю его на исполнение
C:\>"C:\Program Files\Java\jdk1.5.0_06\bin\java" C:\First\Hello2
никаких .class не добавляю. у меня все равно вылазит ошибка
Exception in thread "main" java.lang.NoClassDefFoundError: C:\First\Hello2
Может ли это быть ошибкой изза неправильной установки самого jdk? или как? или что?
Спасибо!
Сам текст примеры стандартный:
public class Hello2{
public static void main(String arg[]){
System.out.println("Hello! Java.");
}
}
Пробовлись и еще варианты:
class Hello2{
public static void main(String arg[]){
System.out.println("Hello! Java.");
}
}
//***********************
public class Hello2{
public static void main(String args[]){
System.out.println("Hello! Java.");
}
}
Все равно не работает и одна и таже ошибка.
А у меня тогда встречный вопрос по тому же самому примеру Привет, Ява.
sdk1.5.0_06 установлен софт в директорию C:\Program Files\Java
Файл Hello2.java расположен в папке C:\First
Компилируется все ок, без ошибок создается файл Hello2.class
Я запускаю его на исполнение
C:\>"C:\Program Files\Java\jdk1.5.0_06\bin\java" C:\First\Hello2
никаких .class не добавляю. у меня все равно вылазит ошибка
Exception in thread "main" java.lang.NoClassDefFoundError: C:\First\Hello2
Может ли это быть ошибкой изза неправильной установки самого jdk? или как? или что?
Спасибо!
Сам текст примеры стандартный:
public class Hello2{
public static void main(String arg[]){
System.out.println("Hello! Java.");
}
}
Пробовлись и еще варианты:
class Hello2{
public static void main(String arg[]){
System.out.println("Hello! Java.");
}
}
//***********************
public class Hello2{
public static void main(String args[]){
System.out.println("Hello! Java.");
}
}
Все равно не работает и одна и таже ошибка.
Дело в том, что параметром должен идти не название файла или путь - а название класса!!!!
Поэтому необходимо прописать classpath (-cp option) до твоего файла с этим классом, ну и тогда все заработает.
Дело в том, что параметром должен идти не название файла или путь - а название класса!!!!
Поэтому необходимо прописать classpath (-cp option) до твоего файла с этим классом, ну и тогда все заработает.
Я нашла даже статьи про обязательность опций..но куда б и как бы я не ставила эти параметры..у меян не работает..буду еще пробовать(
Я нашла даже статьи про обязательность опций..но куда б и как бы я не ставила эти параметры..у меян не работает..буду еще пробовать(
Ну что ж...
Можешь прописать JAVA_HOME следующим способом:
setx JAVA_HOME "C:\Program Files\Java\jdk1.5.0_06"
setx PATH %PATH%;%JAVA_HOME%\bin
потом
cd C:\First\
java Hello2
Попробуй... может поможет.
Сам не проверял
Ну что ж...
Можешь прописать JAVA_HOME следующим способом:
setx JAVA_HOME "C:\Program Files\Java\jdk1.5.0_06"
setx PATH %PATH%;%JAVA_HOME%\bin
потом
cd C:\First\
java Hello2
Попробуй... может поможет.
Сам не проверял
Карочи, вчера перед сном у меня все же получилось. Сделала следующее:
прописала в Path путь к javac, java и так далее..которые у меня в Програм Файлс/Ява...
Создала переменную classpath с параметрами, как уже давались тут в одной из тем..прям в этом разделе..кому интересно - найдут..переписывать не буду. И! стала запускать и компилятор и на исполнение, находясь в каталоге, гед собственно лежат мои *.java и полученные *.class файлы.
А при запуске на исполнение в результате пишу просто:
С:> java -classpath . Hello
bи все работает. Не знаю, насколько важно было создание сист.переменной ClassPath, но то, что я прописала пути в Path это облегчило однозначно.
Спасибо всем за советы..еще обращусь)))
Не знаю, насколько важно было создание сист.переменной ClassPath, но то, что я прописала пути в Path это облегчило однозначно.
Это очень важно для запуска самих приложений из командной строки. Если сделать JAR файл то все будет нормально это переменная не является необходимой (но только при условии запуска при помощи javaw, если запускать через java -jar то опять же переменная необходима).