Могут ли классы одного пакета распространяться на несколько файлов Jar? - PullRequest
17 голосов
/ 02 апреля 2009

Я использую некоторые классы из файла JAR, и они принадлежат пакету (com.abc.xyz).

Класс, который я пишу, также принадлежит этому пакету, но я не смогу связать свой файл в этот файл JAR. Возможно ли иметь классы, принадлежащие одному и тому же пакету, распределенные по нескольким JAR-файлам?

Ответы [ 5 ]

16 голосов
/ 02 апреля 2009

По умолчанию абсолютно.

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

7 голосов
/ 02 апреля 2009

Это вполне выполнимо, если JAR не имеет запечатанный пакет.

4 голосов
/ 02 апреля 2009

Не понимаю, почему это невозможно. Все, что имеет значение, - это то, что классы находятся в пути к классам.

3 голосов
/ 02 апреля 2009

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

Может быть заблокировано, если любая упаковка помечена как запечатанная в манифесте. Я бы порекомендовал пометить целые банки как запечатанные, как само собой разумеющееся.

Его также можно заблокировать, если в классах есть разные подписчики, и классы загружаются одним и тем же загрузчиком классов.

Если вы загружаете классы, используя другой загрузчик классов, хотя «пространство имен» будет одинаковым, вы фактически не получите пакетный (и соответствующую часть защищенного) доступа.

0 голосов
/ 23 апреля 2009

Иногда вам нужно сделать это, если вы хотите расширить функциональность сторонних библиотек, но они не являются открытыми и / или у вас нет источников

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