Почему мой класс не может быть запущен после объявления пакета и не может быть найден другим классом в том же пакете/папJAVA

Программисты JAVA общаются здесь
Anonymous
Почему мой класс не может быть запущен после объявления пакета и не может быть найден другим классом в том же пакете/пап

Сообщение Anonymous »

У меня возникли проблемы с пониманием того, как работают пакеты. Не использую никакую IDE.
У меня следующая структура папок:
~/dropbox/api/data
В папке data находятся (только) Producer.java, Consumer.java.

Код: Выделить всё

api
├── data
├── Consumer.java
├── Producer.java
└── Producer.class

Код: Выделить всё

package data;

public class Producer {

public static void main(String[] args) {
//do some production
}

public static Producer getProducer() {
//call constructor and return instance
}
}
----------------
package data;

public class Consumer {

public static void main(String[] args) {
Producer worker = getProducer();
}

}
Я перехожу в папку data и javac Producer.java, чтобы скомпилировать Producer.class в той же папке. Затем, когда я запускаю Java Producer, я получаю Ошибка: не удалось найти или загрузить основной класс Producer
Причина: java.lang.NoClassDefFoundError: Producer (неправильное имя: data/Producer).
Та же ошибка, когда я попробовал Java Producer и Java data.Producer из родительской папки API и Java data.Producer в папке data.
Изображение

  • Что здесь не так? Если я удалю данные пакета;, он компилируется (javac) и нормально запускается (java) в папке data.

Кроме того, когда я пробовал javac Consumer.java, я получаю ошибку: невозможно найти производителя символа
. Они находятся в одной папке и объявлены в одном пакете.
  • Что здесь не так?


Подробнее здесь: https://stackoverflow.com/questions/786 ... ther-class

Вернуться в «JAVA»