Почему исходные файлы Java входят в структуру каталогов?

1

как мы Предположим, что я создаю проект Java со следующими классами

  • com.bharani.ClassOne
  • com.bharani.ClassTwo
  • com.bharani.helper.HelperOne
  • com.bharani.helper.support.HelperTwo

с файлами, помещенными непосредственно под папку 'src'

  • ЦСИ /ClassOne.java
  • ЦСИ /ClassTwo.java
  • ЦСИ /HelperOne.java
  • ЦСИ /HelperTwo.java

и скомпилируйте их с помощью команды

$javac -d classes src/*. java (предполагается, что каталог классов существует)

Компилятор компилирует эти файлы и помещает файлы классов в соответствующие подкаталоги внутри каталога "classes", как этот

  • Классы/ком/Bharani/ClassOne.class
  • Классы/ком/Bharani/ClassTwo.class
  • Классы/ком/Bharani/помощник/HelperOne.class
  • Классы/ком/Bharani/помощник/поддержка/HelperTwo.class

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

Мой вопрос:. Когда я использую среду IDE, такую ​​как Eclipse или NetBeans, они также создают структуру каталогов для каталога исходного кода (здесь также каталог src). Почему это? Это обязательно? Или это просто конвенция?

Спасибо.

Теги:
conventions
directory-structure

3 ответа

4
Лучший ответ

В основном конвенция. Для источника имеет смысл отразить двоичную структуру.

Кроме того, если у вас есть два класса с одним и тем же именем (но в разных пакетах), как бы вы могли сохранить источник, если не в разных каталогах?

Сохранение источника только в одной папке отлично подходит для небольших проектов, но как только у вас есть более крупный проект (сотни классов), группировка источника в пакеты делает вещи более управляемыми.

4
Is it mandatory? 

Нет

Or, is it just a convention?

Да, чтобы отразить структуру вашего пакета в исходном дереве.

Я всегда думал, что пакет Java немного сломан:

он кажется иератическим, но это не так.

это простой (уникальный) префикс для определения отдельных пространств имен.

  • 1
    Часто упускается из виду тот факт, что пакеты Java на самом деле не являются иерархическими. Наоборот, пакеты Scala есть!
1

Я думал, что это обязательно, но ваш опыт предполагает иное. В любом случае, это просто здравый смысл, не так ли? У больших проектов есть так много исходных файлов - почему жизнь осложняется тем, что у вас есть разные структуры для вашего источника и ваших файлов классов?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню