исключение в потоке 'main' java.lang.NoClassDefFoundError: - PullRequest
47 голосов
/ 13 июня 2011

Следующая программа выдает ошибку:

public class HelloWorld {
    public static void main(String args[]) {
        System.out.println("Hello World!"); 
    }
}

CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\

Path C:\Program Files\Java\jdk1.6.0_18\bin\

JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin

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

Ответы [ 21 ]

1 голос
/ 13 июня 2011

Ваш CLASSPATH также должен знать местонахождение вашего HelloWorld класса.

Проще говоря, вы должны добавить точку . (означает текущий каталог) в CLASSPATH, если вы запускаете команды javac и java из командной строки DOS.

1 голос
/ 13 августа 2013

У меня была та же проблема, и я наткнулся на решение с помощью «Build Main Project F11».Ide поднял «опцию», которую я мог бы снять с «Compile on Save» в части Build> Compiling диалогового окна конфигурации проекта.Сняв флажок «Компилировать при сохранении», а затем выполнив обычное (для меня) «Очистить и построить», добился цели.

0 голосов
/ 29 марта 2019

Я наконец нашел это как ошибку в редакторе Apache Netbeans:

Приведенные ниже шаги устранят ошибку:

  1. Переименуйте имя файла и класс в Abc
  2. Закрыть редактор
  3. Открыть редактор
  4. Переименование имени файла и класса из Abc обратно в предыдущее имя
  5. Теперь отладочный проект (Ctrl + F5) работает нормально

Надеюсь, это поможет, если вы используете новые Apache Netbeans (не старые Netbeans)

0 голосов
/ 02 марта 2016

, если ваш Program.java находится в каталоге "src / mypkg / subpkg /":

перейти к директории "src"

Затем для компиляции используйте "javac mypkg / subpkg / Program.java"

Для запуска используйте "java mypkg.subpkg.Program.class"

0 голосов
/ 20 октября 2015

Если вы хотите «скомпилировать и выполнить» любой файл Java, созданный вами с помощью любой IDE (например, eclipse), просто выполните следующие команды:

Компиляция: javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.java

Выполнить: java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics

0 голосов
/ 15 августа 2015

Попробуйте сделать

javac Hello.java

и затем, если в нем нет ошибок компилятора (чего не должно быть, потому что я не вижу ошибок в вашей программе), введите

java Hello

0 голосов
/ 11 ноября 2014

Я потратил четыре часа, пробуя различные варианты и предложения поиска.

Наконец-то нашла этот пост, который работал, но не лучшее решение для изменения исходного кода для его тестирования.

  1. Попытка изменения CLASSPATH, чтобы включить библиотеки классов, set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
  2. Изменил текущий каталог на родительский каталог (папка пакета) и устал java <packageName>.<className> также попробовал java ..\<packageName>.<className>

Ни один не работал.

Однако первый ответ сработал. Большое спасибо, Абхи !!!

«Я нашел еще одну распространенную причину. Если вы создадите файл Java внутри пакета, используя IDE, например, eclipse, вы найдете имя пакета в верхней части файла Java, например,« пакет pkgName ». Если вы попытаетесь запустить это файл из командной строки, вы получите ошибку NoClassDefFoundError. Удалите имя пакета из файла Java и используйте команды в командной строке. Потрачено на это 3 часа. - Абхи "

Интересно, есть ли другой способ заставить его работать без изменения исходного кода? Спасибо!

0 голосов
/ 04 февраля 2014

Простое и простое решение: Я решил эту проблему (NetBeans) путем экспорта исходного проекта в zip-файл, удаления исходного каталога проекта и импорт проекта обратно из zip-файла.

0 голосов
/ 18 января 2014

Проблема здесь заключается в настройке среды и запуске файла класса.а.Чтобы задать путь среды, выполните следующую команду: set path = C: \ Program Files (x86) \ Java \ jdk1.7.0 \ bin b.запустить программу из пакета, например com.test.TestJavaClass

Команда: java com.test.TestJavaClass

Общая проблема здесь заключается в том, что мы запускаем ее либо из пакета, например src / package /название.Мы не должны включать src, достаточно имени пакета.

0 голосов
/ 24 сентября 2013

У меня была эта ошибка, потому что мои файлы были в пакете. Так что мой пакет foo мне нужно было назвать как:

Java Foo.HelloWorld

...