Ошибка Java: пакет 'x' не существует
Итак, у меня есть файловое дерево в Linux, которое выглядит так:
- ~ / Keyboard_warriors/
- тестовое задание/
- ConfigTest.java
- ConfigParser.class
- ConfigParser.java
- тестовое задание/
Проблема в том, что когда я пытаюсь ввести в Терминале:javac ConfigTest.java
Я получаю ошибку:
ConfigTest.java:2: error: package keyboard_warriors does not exist
import keyboard_warriors.*;
^
Это действительно беспокоит меня, и я не мог найти ответы нигде. Если бы вы могли решить мою проблему, я был бы очень счастливым человеком.
3 ответа
Я давно понял ответ, но забыл его опубликовать. Извини:). Это на самом деле довольно просто. Я пытался скомпилировать классы изнутри test/
папка. Что я сделал, так это поднялся до места, где все классы были доступны без использования абсолютного пути и без использования ../
в пути (ака keyboard_warriors/
папка. Я просто откомпилировал оттуда, и все было в порядке. Спасибо за вклад, хотя, это помогло некоторым;).
Учитывая структуру, которую вы процитировали, было бы странно импортировать keyboard_warriors
в ConfigTest
; от структуры, вы ожидаете увидеть package keyboard_warriors;
вместо этого, потому что ConfigTest
находится в keyboard_warriors
каталог.
Если ConfigTest
не в keyboard_warriors
пакет, вероятно, находится не в том каталоге.
В общем: когда вы компилируете классы, .java
Файл должен находиться в каталоге с именем пакета, в котором он находится. Так, например, если ConfigTest
должен быть в пакете, вы должны сохранить структуру каталогов / файлов как есть и использовать
package keyboard_warriors;
...в ConfigTest.java
,
Если ConfigTest
не должно быть в этом пакете, вы, вероятно, переместите его из этого каталога; возможно:
- ~ / Keyboard_warriors/
- тестовое задание/
- ConfigTest.java
- тестовое задание/
- ConfigParser.class
- ConfigParser.java
...а потом import keyboard_warriors.*;
будет иметь смысл, при условии, что ваш домашний каталог находится в вашем classpath.
Он не будет распознавать каталог за пределами пути к классам как часть пути к классам.
То, что вы, вероятно, хотите, это включить другую папку внутри того места, где выполняется ваш тест:
test/
keyboard_warriors/
ConfigTest.java
ConfigParser.java
Это также предполагает, что вы объявили эти классы в keyboard_warriors
classpath, этим:
package keyboard_warriors;
В зависимости от того, как вы компилируете эти классы, вам нужно будет добавить его в classpath с помощью -cp
флаг на javac
,