Как структурирован проект Java (по сравнению с проектом Visual Studio C #)? - PullRequest
4 голосов
/ 02 июля 2011

Я пытаюсь научиться автоматизации проектов и использую книгу Pragmatic Project Automation в качестве руководства. Это примеры на Java, поэтому мне легче следовать за ним на Java. У меня нет опыта использования Java или каких-либо его IDE. Тем не менее, я изучил некоторые C # с помощью Visual Studio (хотя я все еще начинающий).

У меня проблемы с пониманием некоторых аспектов настройки проекта Java. Я использую Netbeans IDE 7.0 в Windows 7. В Visual Studio у меня есть решение с проектами . С Netbeans у меня, кажется, просто есть проект с каталогами, определяющими остальную часть структуры (и IDE в некоторой степени)? Эквивалент Add Reference, кажется, добавляет источник к Classpath. Также кажется, что существует некоторая степень разделения между компилятором и IDE. В настоящий момент я могу скомпилировать свой проект просто отлично, в то время как среда IDE сообщает мне, что у меня все еще есть ошибки (и я предполагаю, что это потому, что я неправильно настроил проект).

Я в основном ищу аналогии, которые помогут мне лучше понять структуру проекта Java.

Ответы [ 3 ]

3 голосов
/ 02 июля 2011

Много общего между двумя языками и IDE.Я провел много лет в обоих.Для начала эквивалентом «добавить ссылку» в VS является добавление библиотеки или jar в netbeans.Что касается ссылки - jar - это почти то же самое, что модуль или .dll в VS.Баночка - это скомпилированная ссылка.Чтобы добавить ссылку, просто перейдите в меню проекта, а затем в свойствах, затем в меню библиотек оттуда вы можете добавить либо предварительно собранные библиотеки NetBeans, которые являются коллекциями .jar, либо один .jar, либо даже проект.Добавив ссылку, вы можете импортировать их в свой класс, как в C #.

Netbeans на самом деле не имеет «решения», как VS.Вы имеете дело с индивидуальными проектами.Однако у него есть возможность добавить проект в качестве ссылки, поэтому вам не нужно постоянно перестраивать ссылки, когда вы что-то меняете между несколькими проектами.У него также есть группы проектов для группировки похожих проектов.

Наконец, Apache ANT отвечает за связывание всего вместе в фоновом режиме.Netbeans создает файлы build.xml и build-impl.xml в фоновом режиме, чтобы сообщить ANT, как собрать проект в .jar.

Есть и другие мои вопросы, но я думаю, что это отвечает на большинство ваших вопросов.вопросы.Это помогает?

2 голосов
/ 02 июля 2011

Я не могу говорить за NetBeans, так как использую Eclipse, но вы на правильном пути, когда путь к классам примерно эквивалентен ссылкам в мире Visual Studio. Библиотеки (обычно файлы .jar) размещаются в пути к классам и должны быть там как во время компиляции, так и во время выполнения (вы указываете путь к классам для компилятора во время компиляции и для JVM во время выполнения). Путь к классам может содержать много разных записей, и они могут находиться где угодно в структуре проекта (или вне ее целиком).

Сама Java не накладывает много ограничений на структуру вашего проекта, хотя это делают различные IDE и инструменты сборки. Единственное, что является универсальным ограничением во всех средах Java, это то, что исходные файлы (и файлы классов) размещаются в каталоге, названном в честь имени пакета. Поэтому, если имя вашего пакета - com.test.something, то ваши исходные файлы будут в SRC_DIR / com / test / что-то, а ваши файлы классов в OUT_DIR / com / test / что-то (примечание: SRC_DIR и OUT_DIR не являются специальными переменными; каждая IDE будет иметь свой способ указания этих каталогов).

Java-библиотеки, как правило, тесно связаны друг с другом, поэтому в какой-то момент вы обнаружите, что записей пути к классу слишком много, чтобы управлять ими вручную. Прежде чем попасть туда, вам нужно взглянуть на Apache Maven или Apache Ivy , которые являются инструментами управления зависимостями. Вам нужно понять, как они работают (один, а не оба) и как интегрировать их с вашей IDE. Если вы используете Eclipse и Maven, m2eclipse предлагает довольно полную интеграцию между IDE и инструментом управления зависимостями.

1 голос
/ 02 июля 2011

В Netbeans у меня, похоже, просто есть проект с каталогами, определяющими остальную часть структуры (и в некоторой степени IDE)?

Visual Studio диктует конкретный макет проекта ипоскольку компилятор настолько тесно интегрирован в IDE, нет реальной концепции сценария сборки.Напротив, в Java нет такой структуры (хотя появились определенные «лучшие практики», такие как наличие каталога «src» для исходных файлов, «lib» для библиотек, «test» для исходного кода теста и т. Д.) И сценарий сборкиобычно требуется сообщить компилятору, что нужно находить исходные файлы и библиотеки, какие артефакты создавать, а также различные другие задачи (выполнение тестов, развертывание, создание метрик кода и т. д.).

В простых случаях среда IDEпозаботится об этом за вас (если вы будете следовать соглашению для этой конкретной IDE), но в конечном итоге вы, вероятно, захотите взглянуть на инструмент сборки, чтобы понять, что происходит за кулисами.Apache Ant и Apache Maven являются выдающимися предложениями.Муравей очень гибок, в то время как Maven пытается диктовать общий макет.Я предлагаю вам изучить оба варианта и посмотреть, какие из них подходят.

Кажется, что между компилятором и IDE также существует определенная степень разделения.В настоящее время я нахожусь в ситуации, когда могу нормально скомпилировать свой проект, в то время как IDE сообщает мне, что у меня все еще есть ошибки

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

и я предполагаю, что это потому, что у меня неправильно настроен проект

Это возможно, хотя, как указано выше, есть много других объяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...