Подтвердить что ты не робот

Исключение в потоке 'main' java.lang.NoClassDefFoundError:

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

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

Не могли бы вы рассказать мне основную причину?

4b9b3361

Ответ 1

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

Ответ 2

Exception in thread "main" java.lang.NoClassDefFoundError  

Одно из мест java пытается найти ваш .class файл - это ваш текущий каталог. Поэтому, если ваш файл .class находится в C:\java, вам следует изменить его текущий каталог.

Чтобы изменить каталог, введите в командной строке следующую команду и нажмите Enter:

cd c:\java  

Этот . сообщает java, что ваш путь к классам является вашим локальным каталогом.

Executing your program using this command should correct the problem:
java -classpath . HelloWorld  

Ответ 3

Если ваш пакет helloworld, вы должны перейти в родительский каталог вашего пакета, а затем запустите:

java helloworld.HelloWorld

Ответ 4

Запустите его следующим образом:

java -jar HelloWorld.jar

Ответ 5

См. Http://scottizu.wordpress.com/2013/08/28/fixing-the-exception-in-thread-main-java-lang-noclassdeffounderror-in-eclipse/.

Это длинная форма команд Java, которые можно запустить из командной строки Windows:

"C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.java
"C:\Program Files\Java\jdk1.6.0_18\bin\java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld
  1. Эти команды можно запускать из любого каталога, то есть вам не обязательно находиться в каталоге, где находится ваш файл HelloWorld.java.
  2. Первая строка компилирует ваш файл HelloWorld.java, создавая файл HelloWorld.class.
  3. Вторая строка запускает файл HelloWorld.class.
  4. -classpath сообщает Java, где искать указанный файл в каждой команде
  5. Компилятор Java (javac.exe) ожидает расположение файла Java относительно пути к классу (то есть файл находится в C:\Users\Scott\workspace\myproject\com\mycompany\myapp\HelloWorld.java)
  6. Java (java.exe) ожидает пакет (т.е. com.mycompany.myapp) и класс (HelloWorld) относительно пути к классам (т.е. Файл находится в C:\Users\Scott\workspace\myproject\com\mycompany\myapp\HelloWorld.class)

Обратите внимание, что в конце пути к классам нет косой черты. Команды javac.exe ожидают, что файл оканчивается на ".java". Команда java.exe ожидает полное имя класса и не заканчивается на ".class".

Есть несколько способов упростить эти команды:

  1. Вам не нужно указывать полный путь к java.exe. Добавить Java в путь Windows (Run-> sysdm. cpl-> Дополнительно Tab-> Среда Variables-> Выбрать Path-> Изменить-> Добавить "; C:\Program Files\Java\jdk1.6.0_18\Bin\"). Или вы можете добавить JAVA_HOME и создать эту переменную среды.
  2. Вам не нужно вводить полный путь к классу (то есть вы можете просто использовать -classpath "."). Введите каталог, в котором вы будете работать:

    cd "C:\Users\Scott\workspace\myproject \"

  3. Вы можете использовать пакет по умолчанию (поместите каталог файлов HelloWorld.java в свой рабочий каталог и не используйте директиву пакета Java)

Если вы внесете эти изменения, вы запустите что-то вроде этого (и, возможно, сможете пропустить -classpath "."):

cd "C:\Users\Scott\workspace\myproject\"
javac -classpath "." HelloWorld.java
java -classpath "." HelloWorld

Ответ 6

Вот что наконец сработало.

`@echo off
set path=%path%;C:\Program Files\Java\jdk1.7.0_71\bin;
set classpath=C:\Program Files\Java\jdk1.7.0_71\lib;
cd <packageDirectoryName>
javac .\trainingPackage\HelloWorld.java
cd ..
java trainingPackage.HelloWorld 
REM (Make sure you are on the parent directory of the PackageName and not inside the    Packagedirectory when executing java).`

Ответ 7

Сам javadoc из NoClassDefFounError будет хорошим началом (здесь), а затем я предлагаю вам очистить и перестроить ваш проект.

Ответ 8

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

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

Ответ 9

В переменной CLASSPATH необходимо указать каталог, в котором находится ваш файл .class. Вы можете включить '.' в CLASSPATH, чтобы указать, что текущий каталог должен быть включен.

set CLASSPATH=%CLASSPATH%;.

Ответ 10

введите в командной строке cmd следующую строку:

set classpath=%classpath%;.;

Ответ 11

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

Ответ 12

Если бы такая же проблема была решена выше, но никто не работал. Мне пришлось пройти через код java только для того, чтобы обнаружить, что основная функция не может быть распознана, так как не было места btw it и (String) т.е. исходный код:

public static void main(String[]args){

рабочий код.

public static void main (String[]args){

Надеюсь, я помог кому-то.

Ответ 13

Java файл:

package com.beans;

public class Flower{
 .......
}

packages :=> com.beans,
java class Name:=> Flower.java,
Folder structure (assuming):=> C:\com\beans\Flower.*(both .java/.class exist here)

тогда есть два способа его выполнения:

1. Goto top Folder (here its C:\>),
     then : C:> java com.beans.Flower 
2. Executing from innermost folder "beans" here (C:\com\beans:>),
     then: C:\com\beans:> java -cp ./../.. com.beans.Flower

Ответ 14

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

java foo.HelloWorld

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

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

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

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

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

"Я нашел еще одну общую причину: если вы создаете файл java внутри пакета с помощью IDE, например eclipse, вы найдете имя пакета в верхней части вашего java файла, например" package pkgName ". Если вы попытаетесь запустить этот файл файл из командной строки, вы получите ошибку NoClassDefFoundError. Удалите имя пакета из java файла и используйте команды в командной строке. В течение 3 часов для этого - Abhi"

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

Ответ 18

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

javac Hello.java

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

java Hello

Ответ 19

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

Compile: javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.java

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

Ответ 20

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

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

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

Чтобы запустить "java mypkg.subpkg.Program.class"

Ответ 21

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

Ниже приведены шаги по устранению ошибки:

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

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

Ответ 22

У меня был этот proplem, я использовал Maven. Я просто нажимаю maven projects ant и затем называю

project-> plugins -> clean -> and button run.

enter image description here