2013-04-12 3 views
5

Есть несколько вопросов о том, как это похоже на это, но я совершенно не знаком с разработкой Java, и я не знаю, как правильно подойти к этому.В Java, должен ли я создавать новый Пакет, Папка или Исходная папка?

У меня есть решение C#, содержащее два проекта (мое приложение и проект тестирования модулей), и в приложении большинство вещей помещается в папки, например. Интерфейсы, Исключения и т. Д.

Я пытаюсь воссоздать это в Java/Eclipse, но я не знаю, как это сделать. В итоге у меня появилось множество пакетов, которые звучат очень плохо. Я также попытался добавить исходную папку, но это оказалось вне пакета.

Может ли кто-нибудь указать мне в правильном направлении?

А именно, какой из них я должен использовать для представления моего модульного тестового проекта/набора модульных тестов и подпапок, которые существуют только для организации материала.

Редактировать: В нем также говорится, что использование пакета по умолчанию не рекомендуется. Что мне делать?

Редактировать 2: Вот как он выглядит. Это выглядит смутно правильным? Мое исходное решение C# находится справа.

My Layout

+0

Нет ничего плохого в том, что у вас много пакетов; если эти пакеты разумны. –

+0

http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html например – user1516873

ответ

2

В типичном проекте java eclipse у вас будет одна или несколько исходных папок (например, один для кода приложения, один для ваших модульных тестов).

Каждая папка содержит дерево пакетов, обычно начиная с базового пакета, например com.mycompany.myapp.

Для того, чтобы избежать коллизий имен, имена пакетов обычно начинаются с имени домена субъекта, который является автором кода, начиная с домена верхнего уровня и переходящего назад (более общего для более конкретного). Таким образом, уникальное имя каждого класса уникально. Например, если google создает класс с именем List, он будет известен как com.google.List, и он не будет вступать в конфликт с существующим интерфейсом java.util.List.

Вы можете иметь неограниченное количество пакетов внутри этого базового пакета, например:

com.mycompany.myapp.persistence 
com.mycompany.myapp.domain 
com.mycompany.myapp.services 
com.mycompany.myapp.web 

Это все зависит от вашего проекта и, как вы хотите организовать свой код и классы.

На логическом уровне пакеты называются точками в качестве разделителя. Они содержат классы Java.

На физическом уровне на диске каждый пакет является каталогом. Классы java содержатся в .java-файлах (чаще всего один класс для каждого файла).

В Eclipse «исходная папка» - это папка внутри вашего проекта, которая, как известно, Eclipse содержит исходные файлы Java. Он будет скомпилирован включен в выходной файл (например, файл JAR) при создании вашего проекта.

В Eclipse вы обычно просматриваете их на логическом уровне, показывая пакеты. Когда вы скажете Eclipse «создать новый пакет», он создаст для вас каталог. Например, если вы сообщите ему о создании пакета com.mycompany.myproject, он автоматически создаст папку com, содержащую папку mycompany, содержащую папку myproject.

+0

Итак, я должен сделать то, что я сделал выше, но вложить все мои пакеты в первоначальный пакет? – NibblyPig

+0

Да, в основном это. Классы в вашем текущем «пакете по умолчанию» будут непосредственно в вашем базовом пакете проекта, а другие пакеты будут вложены в него. Обязательно выберите пакет, который будет определять ваш проект, а не только вашу организацию. Поэтому, если вы создадите другие проекты позже, у них будет другой базовый пакет. –

+0

Как уже упоминалось, во многих случаях также рекомендуется использовать Maven в качестве инструмента построения. Maven поставляется с проектными структурами по умолчанию для разных видов проектов (они называются архетипами), которые разделяют основные источники, источники тестов, ресурсы и т. Д. Обычно это очень разумно, и вы получаете много других преимуществ, что является самым большим в управлении IMHO (JAR). –

1

В исходниках Java древовидной структуры должна соответствовать структуре пакета

так foo.bar пакет должен быть выложен в

Src/Foo/баре

Также по умолчанию пакет не может советую - но вы все равно можете использовать его - лучше поместить вещи в пакет, хотя

+1

Обычно '/ src/foo/bar' означает, что источники находятся в'/src' и классы пакета 'foo.bar' находятся в папке'/src/foo/bar' –

+1

Просто примечание, если вы знакомы с C#, вы можете думать о пакетах как о пространствах имен на C#. Концепция очень похожа. – jnovacho

+0

@Mark Rotteveel - хорошо пятнистый - отредактирован – gheese

0

В java разных проектах t структура развития протекает в соответствии с типом проекта. Итак, поскольку вы новичок в java и Eclipse, лучше установить maven plugin и создать проект maven и выбрать архетипы в соответствии с вашим типом проекта, как автономно или на основе Интернета. Плагин maven создаст структуру проекта, включая пакеты, исходную папку тестовых пакетов и т. Д. Более подробную информацию о структуре проекта можно получить от this

0

Использование пакета по умолчанию может создавать конфликты пространства имен. Представьте, что вы создаете библиотеку, содержащую класс MyClass. Кто-то использует вашу библиотеку в своем проекте, а также имеет класс MyClass в своем пакете по умолчанию. Что должен делать компилятор? Пакет в Java фактически является пространством имен, которое полностью идентифицирует ваш проект. Поэтому важно не использовать пакет по умолчанию в проектах реального мира.

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