Структура пакета должна быть такой же, как структура каталога в Java «всегда»? - PullRequest
3 голосов
/ 23 февраля 2012

Структура пакета должна быть такой же, как структура каталогов в Java, как в Eclipse.Я пытался просмотреть формальную документацию по Oracle Java-документам, но нигде не смог найти это правило

Распространяется ли это правило на другие среды IDE, такие как Netbeans, или это правило самого языка Java?Насколько строгое это правило, можно ли от него отклониться и почему оно было сделано?

Ответы [ 4 ]

3 голосов
/ 23 февраля 2012

Это указано в JLS как правило, которое требуется компиляторам :

Пакеты, которые хранятся в файловой системе, могут иметь определенные ограничения наорганизация их модулей компиляции, чтобы позволить простой реализации легко находить классы.

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

Обратите внимание, что по умолчаниюjavac сгенерирует файл класса как одноранговый узел исходного файла, независимо от структуры пакета;если вы укажете -d, он сгенерирует соответствующую выходную структуру, даже если она не соответствует исходной структуре.

2 голосов
/ 23 февраля 2012

Может быть, вам нужно взглянуть на хорошее руководство по пакетам . Первое предложение ссылки:

Многие реализации платформы Java полагаются на иерархические файловые системы для управления файлами источника и класса, хотя спецификация языка Java не требует этого.

1 голос
/ 23 февраля 2012

Не совсем.Вы можете иметь следующий код, не помещая его в папку my/app

package my.app;

public class Tmp{

}

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

Но для запуска приложения файлы классов должны относиться к папкам, указанным в пакете.

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

1 голос
/ 23 февраля 2012

Это не специфично для IDE. Структура каталогов и структура пакетов должны соответствовать друг другу. Вы можете найти более подробную информацию в книгах по спецификации и сертификации Java.

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