Ограничение доступа: недоступно из-за ограничения на требуемую библиотеку .. \ jre \ lib \ rt.jar - PullRequest
75 голосов
/ 13 февраля 2012

Я пытаюсь изменить какой-то устаревший код с тех пор, как вернулся, и получаю следующие виды ошибок:

Ограничение доступа: Метод create (JAXBRIContext, Object) из типа Headers недоступен из-за ограничения нанеобходимая библиотека .. \ jre \ lib \ rt.jar

для этих операторов импорта:

import com.sun.xml.internal.bind.api.JAXBRIContext;
import com.sun.xml.internal.ws.api.message.Header;
import com.sun.xml.internal.ws.api.message.Headers;
import com.sun.xml.internal.ws.developer.WSBindingProvider;

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

Кто-нибудь может сказать мне, что это за ошибка и как я могу исправить ее?

Спасибо за вашу помощь заранее,

Олли

Ответы [ 10 ]

127 голосов
/ 17 мая 2012

Я столкнулся с чем-то похожим, я думаю, что причиной предупреждения является Eclipse, пытающийся отговорить вас от использования внутренних com.sun пакетов, которые установлены как часть вашей JRE рабочей области, но которые не являются частью общедоступного API Java .

Как говорит Джастин в своем ответе, изменение настроек компилятора может скрыть предупреждение. Более детальный подход - изменить путь сборки, чтобы явно разрешить доступ к рассматриваемому пакету:

  1. Откройте вкладку Библиотеки в окне свойств проекта Java Build Path.
  2. Разверните запись системной библиотеки JRE.
  3. Выберите «Правила доступа» и нажмите кнопку «Редактировать».
  4. Нажмите кнопку Добавить в появившемся диалоговом окне.
  5. Для нового правила доступа установите для разрешения значение Доступно, а для шаблона - "com/sun/xml/internal/**".

После добавления этого правила доступа ваш проект должен собираться без этих предупреждений.

78 голосов
/ 11 июля 2012

Отличный ответ уже предоставили на месте здесь .

См. Резюме ниже:

  1. Перейти в настройки пути сборки в свойствах проекта.
  2. Удалить системную библиотеку JRE
  3. Добавьте его обратно; Выберите «Добавить библиотеку» и выберите Системную библиотеку JRE. По умолчанию у меня сработало.
41 голосов
/ 06 марта 2012

Не настоящее решение, но везде, где я смотрел, было предложено просто сказать Eclipse, что это не ошибки.Вы можете изменить его, перейдя в Свойства -> Компилятор Java -> Предупреждения об ошибках -> Устаревшие и ограниченные API -> Запрещенная ссылка (правило доступа), Измените его с Ошибка на Предупреждение или Игнорировать.

15 голосов
/ 16 января 2015

Я решил эту проблему с помощью следующих шагов: разверните свой проект, щелкните правой кнопкой мыши «Системная библиотека JRE»> Свойства> выберите третий вариант «Рабочая среда по умолчанию JRE»> OK. Надеюсь, вам это тоже поможет

8 голосов
/ 25 апреля 2016

В Eclipse:
Project -> properties -> java Build Path -> libraries

Удалите существующую системную библиотеку JRE, затем Add Library -> JRE System library -> next -> ok

Ошибка будет удалена.

5 голосов
/ 18 марта 2014

У меня была такая же проблема, когда мой плагин зависел от другого проекта, который экспортировал некоторые пакеты в свой файл манифеста. Вместо того, чтобы изменить правила доступа, мне удалось решить проблему, добавив необходимые пакеты в раздел Export-Package. Это делает пакеты легально видимыми. Eclipse фактически предоставляет это исправление для маркера ошибки «Ограничение доступа».

1 голос
/ 30 ноября 2016

В среде Eclipse, где вы выполняете свои Java-программы, выполните следующие шаги:

  1. Нажмите Project прямо над строкой меню в Eclipse.
  2. Нажмите на свойства.
  3. Выберите библиотеки, нажмите на существующую библиотеку и нажмите «Удалить» в правой части окна.
  4. Повторите процесс и нажмите «Добавить библиотеку», затем выберите системную библиотеку JRE и нажмите «ОК».
0 голосов
/ 21 октября 2015

Я просто изменил фасет проекта на 1.7, и это сработало.

0 голосов
/ 21 апреля 2014

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

  1. Зависимости файла продукта,
  2. Зависимости plugin.xml (и убедитесь, что он не импортирован неявно с помощью диалога импортированных пакетов).
  3. Вкладка плагинов конфигурации запуска. Выполнить как ..-> Выполнить конфигурации-> вкладка Плагины. Снимите флажки со старых плагинов и нажмите «Добавить обязательные плагины».

Это сработало для меня, но ваш пробег может отличаться.

0 голосов
/ 15 января 2014

Перейти к Buildpath

Удалите существующую JRE и добавьте новую библиотеку JRE, которая содержит Jdk1.6 и закончить Теперь очистите весь проект и постройте заново

Я думаю, что таким образом вы можете исправить свою ошибку

...