У меня следующая структура папок:
~/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();
}
}
Причина: 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