2013-04-23 2 views
0

У меня есть несколько классов, которые находятся в classes/com/scja/exam/tutorial/planets на файловой системе. Я пытаюсь скомпилировать файл, который находится в classes/com/scja/exam/tutorial/. Нужно ли вручную импортировать это? Я пытаюсь скомпилировать эту команду:Должен ли я импортировать класс, который находится в том же пакете, но в разных папках?

javac -d classes -cp classes/com/scja/exam/tutorial/planet/:. SRC/COM/scjaexam/учебник/GreetingsUniverse.java

Похоже, Java не может найти классы этот файл должен.

+1

Попробуйте. Он может работать – Justin

+0

'import'. (Разумеется, вам нужно, чтобы класс был правильно расположен в вашем пути к классу.) –

+0

Первый компакт-диск «root» вашего пакета. –

ответ

3

Поймите, что, когда Java ищет класс с именем aaa.bbb.ccc.MyClass, он ищет каждый каталог в пути к каталогу под именем «aaa». Найдя его, он будет искать этот каталог для «bbb», а затем, если он найден «ccc», тогда на самом деле ищите «MyClass.class». Если вы создадите свой classpath -cp aaa/bbb/ccc, тогда Java будет искать там, не найдет «aaa» и не сдастся.

+0

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

2

Класс в пакете должен импортировать классы, которые он использует (без использования их полного имени), которые не находятся в одном пакете (не в java.lang). Каталоги, в которых хранятся классы, должны соответствовать пакетам, но у вас может быть несколько корневых каталогов (или банок), содержащих классы.

Ваша команда не работает, потому что вы помещаете каталог пакета (classes/com/scja/exam/tutorial/planets/) в путь к классам вместо того, чтобы помещать корневой каталог (classes).

+0

Я попробовал. Это не работает. – andrefurquin

+0

Постарайтесь принять строгий подход. Убедитесь, что каталоги совпадают с пакетами. Сделайте sur, чтобы разместить java-файлы в другом дереве, чем файлы классов. И когда что-то не работает, прочитайте сообщение об ошибке. Попытайтесь это понять. И если вы этого не сделаете, четко опишите вашу проблему, объяснив, какие файлы находятся в тех местах, из которых точно вы вводите команду, откуда и что является точным и полным сообщением об ошибке, которое вы получаете. Просто сказать «это не работает» не помогает. Он работает, если вы делаете это правильно. –

+0

Это сработало для меня. Проблемы состояли в том, что я должен был включать классы. Я думал, что мне нужно было это делать только во время компиляции. – andrefurquin

Смежные вопросы