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

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

Ограничение доступа: метод 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 ответов

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

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

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

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

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

Смотрите резюме ниже:

  1. Зайдите в настройки Build Path в свойствах проекта.
  2. Удалить системную библиотеку JRE
  3. Добавьте это назад; Выберите "Добавить библиотеку" и выберите Системную библиотеку JRE. По умолчанию работал для меня.

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

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

В Затмении:
Project -> properties -> java Build Path -> libraries

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

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

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

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

  1. Нажмите на Project чуть выше строки меню в затмении.
  2. Нажмите на свойства.
  3. Выберите библиотеки, нажмите на существующую библиотеку и нажмите "Удалить" в правой части окна.
  4. Повторите процесс и нажмите "Добавить библиотеку", затем выберите системную библиотеку JRE и нажмите "ОК".

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

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

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

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

Перейти к Buildpath

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

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

Другие вопросы по тегам