Пакет com.faizan.org доступен из нескольких модулей: ProjectA, ProjectB, использующих JDK 9+ во время сборки в Eclipse 2019-12. - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть 2 проекта, скажем ProjectA и ProjectB, оба из которых содержат пакет com.faizan.org. ProjectA добавлен в путь модуля ProjectB.

<classpathentry combineaccessrules="false" kind="src" path="/ProjectA">
    <attributes>
        <attribute name="module" value="true"/>
    </attributes>
</classpathentry>

Теперь я пишу новый класс в ProjectB, который должен импортировать класс из com.faizan.org ProjectA, но я получаю ошибку Пакет com.faizan.org доступен из нескольких модулей: ProjectA, ProjectB в eclipse 2019-12 с использованием openJdk 12, а соответствие компилятора также установлено на 12.

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

1 Ответ

1 голос
/ 20 февраля 2020

Простой ответ: вы не можете.

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

Далее вам следует вернуться, почему вам нужно иметь один и тот же пакет в обоих проектах? Если это тестирование в «белой коробке», рассмотрите возможность перемещения тестов в тот же проект, но в отдельную исходную папку, помеченную как содержащую тесты. Затем Eclipse выполнит всю необходимую проводку за кулисами, чтобы тесты были частью модуля, а не частью модуля одновременно.

Если это не ради тестирования whitebox, и вы Если вы захотите принять JPMS, то у вас останется 2,5 опции:

  1. Переместить весь код, который разделяет пакет, в один и тот же проект / модуль.
  2. Измените структуру пакета, чтобы избежать split package.
  3. (Используйте сложный набор опций JPMS, включая --patch-module и, возможно, больше, чтобы позволить JPMS рассматривать отдельные проекты как один модуль - хотя возможно, я бы посчитал это «успешной миграцией» )
...