Ответ 1
По умолчанию, абсолютно.
Однако, если вы хотите, чтобы классы из определенного пакета загружались только из одного файла jar, вы можете добавить эту информацию в манифест.
Я использую некоторые классы из JAR файла и они принадлежат к пакету (com.abc.xyz).
Запись класса am также относится к этому пакету, но я не смогу связать свой файл с этим файлом JAR. Возможно ли, чтобы классы, принадлежащие одному и тому же пакету, распространялись по нескольким JAR файлам?
По умолчанию, абсолютно.
Однако, если вы хотите, чтобы классы из определенного пакета загружались только из одного файла jar, вы можете добавить эту информацию в манифест.
Это вполне выполнимо, если JAR запечатал пакет.
Я не понимаю, почему это невозможно. Все, что имеет значение, это то, что классы находятся в пути к классам.
Вероятно, это не то, что вам нужно делать. Если он в одном пакете, если он не будет упакован вместе (я считаю, что Jigsaw намеревается разрешить разделение пакетов между модулями, но это другой чайник рыбы).
Он может быть заблокирован, если какой-либо пакет отмечен как запечатанный в манифесте. Я бы рекомендовал маркировать целые банки как запечатанные, как само собой разумеющееся.
Он также может быть заблокирован, если в классах есть разные подписывающие лица, а классы загружаются одним и тем же загрузчиком классов.
Если вы загружаете классы с использованием другого загрузчика классов, хотя "пространство имен" будет одинаковым, вы фактически не получите доступ к пакету (и соответствующей части защищенного).
Иногда вам нужно это делать, если вы хотите расширить функциональность сторонних библиотек, но они не являются открытыми и/или у вас нет источников