Получение следующей ошибки сборки: «тип {---} не может быть разрешен. На него косвенно ссылаются необходимые файлы .class» - PullRequest
6 голосов
/ 12 августа 2010

Итак, у меня есть следующие настройки в Eclipse (Java):

  1. У меня есть проект (давайте назовем это «проектом 1»), который предоставляет интерфейс (который является частным пакетом)
  2. У меня есть другой проект («проект 2»), который содержит пакет из проекта 1 ... Классы в этом пакете расширяют частные интерфейсы пакета в «проекте 1» и предоставляют хороший общедоступный интерфейс.
  3. Теперь у меня есть «проект 3», который ссылается на «проект 2».Затем в проекте 3 используется открытый объект, предоставленный в проекте 2.

После вызова конструктора из проекта 2 в проекте 3 я получаю следующее:

"тип {---} не может быть решен. На него косвенно ссылаются необходимые файлы .class "

Если я добавлю ссылку на проект 1 из проекта 3, все будет хорошо.Есть ли способ НЕ ссылаться на проект 3 таким образом?Это действительно не имеет смысла ссылаться на это.

Я использую Eclipse (Helios) с самым последним JDK и т. Д ...

Ответы [ 2 ]

7 голосов
/ 12 августа 2010

Это «переходная зависимость». На вашем classpath вам нужны все классы, которые требуются для любого используемого вами класса. Поэтому вам нужно как-то иметь классы проекта 1 в classpath - вы можете, например, упаковать их как .jar. Или вы можете перейти к Build Path > Order and Export проекта 2 и пометить проект 1 как экспортированный.

Важным моментом здесь является то, что зависимости проекта являются простым «плюшкой» для разработки - когда вы запускаете программу автономно (или развертываете ее в контейнере), зависимости проекта Eclipse исчезают. Поэтому вы должны убедиться, что ваши зависимости соблюдены.

2 голосов
/ 12 августа 2010

Не уверен, что это то, что вы ищете.Попробуйте это -

  1. В Eclipse щелкните правой кнопкой мыши Project2, выберите Путь сборки -> Настроить путь сборки
  2. Перейдите к Заказ и экспорт вкладка.он должен иметь Project1 в списке.Установите флажок перед ним.
  3. Перестройте свои проекты.

По сути, вы экспортируете зависимость Project1 из project2.Таким образом, любой проект, который добавляет project2 в качестве зависимости, также увидит Project1 без явного добавления его в путь к классам.Затмение сделает это прозрачным образом.

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