2011-02-06 3 views
1

Я столкнулся с этой проблемой при попытке запустить свой файл Java, написав Java имя файла ....java.lang.NoClassDefFoundError в ЦМД

Я прочитал на многих страницах возможные пути это может быть исправлено, но, к сожалению, я не смогли исправить мою проблему ...

  1. Прежде всего, я посмотрел на свои переменные окружения и заметил, что не было никакого CLASSPATH множество, и я указал PATH правильно моей JRE, а также jdk bin in C: \

  2. Во-вторых, я могу запустить JAVAC filename.java и заметим, что файл .class будет построен в локальном каталоге.

  3. При написании javac -classpath. filename произведения письменные java -classpath. filename (без .class) приводит к той же ошибке.

Я просто не знаю, как запустить свою программу в командной строке !!!! Пожалуйста, не дайте мне ссылки на страницы, которые дали одинаковые ответы, которые я уже упоминал выше, поскольку они не работают в моем случае .....

Пожалуйста, помогите ....

+0

Является ли ваш класс в пакете (т. Е. Использует «пакет x.y.z» в начале файла)? –

+2

Я предлагаю вам предоставить SSCCE вместе с точным выходом ваших команд. – aioobe

+0

«Короткий, самосохраненный, правильный пример» –

ответ

3

Обратите внимание, что если ваш класс находится в каком-то пакете mypackage, вам необходимо убедиться, что файл класса находится внутри mypackage/ и сделать

java -classpath . mypackage.YourClass 
+0

пакет по умолчанию обескуражен. Поместите его в какой-то пакет. – Bozho

0

Там есть немного мало информации в вашем посте ... как было сказано, полный пример действительно поможет решая это. Некоторые идеи:

  • Является ли класс названным filename? Если нет, вы должны убедиться, что вызываете нужное имя класса в команде java.
  • Если у вас есть странные символы в имени вашего класса (в основном ничего, кроме A-Z, a-z, 0-9, _), он может быть искажен вашей файловой системой и, таким образом, приведет к тому, что java не сможет его найти. Убедитесь, что имя класса совпадает с именем файла.
  • Если вы используете пакеты, убедитесь, что имена пакетов совпадают с вашей файловой структурой (см. Последние вопросы с пакетом тегов для некоторых примеров).
  • Является ли ваш класс общедоступным? Если нет, сделайте это так. (Это должно дать еще одну ошибку.)
0

Написание javac filename.java и java-файла недостаточно для этого.

Нам также необходимо знать содержимое файла filename.java или, по крайней мере, первые несколько строк.

Это ожидаемый способ объявить класс

public class Filename { 
    } 

Это так, как это должно было бы быть, чтобы срабатывать, ваш пример: Java файла

public class filename { 
    } 

Этот тоже может существовать, но вы, вероятно, просто возитесь с нами :)

public class SomethingElse { 
} 

В целом независимо от того, какое имя файла находится в файловой системе, класс имеет имя и это имя, которое ожидает команда java. Я бы рекомендовал использовать форму первой буквы в верхнем регистре, поскольку она понятна imo