Подтвердить что ты не робот

Что означает объединение классов в Eclipse classpaths?

Это уже несколько лет подтачивает меня, и я подумал, что один из вас знает, какие люди знают - в файлах Eclipse.classpath, каков атрибут combaccessrules для элемента classpathentry, который фактически используется?

В диалоговом окне конфигурации пути Java можно увидеть, что он может быть maniuplated, но я не могу придумать для этого хороший вариант использования. Если я уклоняюсь от настроек или изменяю файл .classpath вручную, это не имеет никакого эффекта.

Я надеюсь, что кто-то еще положит его на пользу, и я могу украсть их идеи. В принципе, это зуд, который я пытаюсь поцарапать.

4b9b3361

Ответ 1

При правильном использовании правил доступа вы можете предотвратить использование "внутренних" и/или "не-api" классов и методов. Когда вы добавляете класс или пакет как Запрещенный или Отклоненный, компилятор показывает ошибку или предупреждение, когда вы используете этот класс или класс из указанного пакета. Для более длительного введения правил доступа вы должны прочитать эту короткую статью.

Для использования правил доступа к комбайну представьте себе следующую ситуацию:

  • У вас есть 2 проекта, A и B.
  • На пути к классам проекта A есть файл jar, который экспортируется. В банке содержатся некоторые "стабильные api", "неустойчивые api" и "non-api" публичные классы.
  • Проект B зависит от проекта A.

Вы не разрешаете использовать классы "не-api" в проекте A, поэтому вы устанавливаете некоторые правила запрещенного доступа для этих классов/пакетов.

В проекте B вы также не можете использовать "non-api", но вы хотите получить предупреждение при использовании "нестабильной api". В этом случае в проекте B вам нужно только установить дополнительные запрещенные правила доступа, если вы проверите правила Combine с правилами доступа экспортируемых записей проекта.

Ответ 2

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

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

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

Объединить правила доступа, судя по JavaDoc, является реальным вариантом использования. Чтобы использовать его, вам нужно будет:

  • правило доступа в экспортированной исходной записи одного проекта
  • ссылка на этот проект из родительского проекта
  • необходимо объединить правила доступа подпроекта с родительским

Я действительно не могу сказать, как это было бы полезно, но я надеюсь, что, по крайней мере, ответит на ваш вопрос "что это":)

Ответ 3

хотя я никогда не использовал его сам, немного можно найти здесь.

должны ли сочетаться правила доступа к экспортированным записям проекта с этими правилами доступа к записи

правила доступа были бы чем-то вроде включения "com/tests/**"