Ограничение доступа к классу из-за ограничения на требуемую библиотеку rt.jar? - PullRequest
803 голосов
/ 14 мая 2009

Я пытаюсь скомпилировать код Java 1.4, созданный IBM WSDL2Java для Java5, без воссоздания заглушек и увидел эту ошибку в Eclipse. Я предполагаю, что созданные заглушки должны просто компилироваться, пока доступны файлы времени выполнения (они есть).

Access restriction: The type QName is not accessible due to restriction on required library C:\Program Files\Java\jdk1.5.0_16\jre\lib\rt.jar

Полное имя класса: javax.xml.namespace.QName

Что именно здесь происходит?

Это тот случай, когда я пытаюсь переработать свинью из колбасы? Мне лучше воссоздать заглушки?

Ответы [ 15 ]

5 голосов
/ 01 апреля 2013

В случае, если вы уверены, что должны иметь доступ к данному классу, это может означать, что вы добавили в свой проект несколько jar-файлов, содержащих классы с одинаковыми именами (или путями), но разным содержимым, и они затмевают друг друга (обычно старый нестандартный файл jar содержит встроенную старую версию сторонней библиотеки).

Например, когда вы добавляете jar, реализующий:

a.b.c.d1
a.b.c.d2

но также и более старая версия, реализующая только:

a.b.c.d1
(d2 is missing altogether or has restricted access)

В редакторе кода все работает нормально, но во время компиляции происходит сбой, если «старая» библиотека затмевает новую - d2 неожиданно оказывается «отсутствующей или недоступной», даже если она там есть.

Решение состоит в том, чтобы проверить порядок библиотек времени компиляции и убедиться, что библиотека с правильной реализацией идет первой.

4 голосов
/ 16 февраля 2015

Перейти к пути сборки Java в свойствах проекта. Удалить существующую системную библиотеку JRE Затем добавьте его снова, т.е. добавьте библиотеку -> JRE Lib - выберите jre ---> Готово. Наконец, выберите вкладку order и export , выберите JRE Lib и двигайтесь вверх. Вот и все.

3 голосов
/ 28 июля 2014

Просто измените порядок пути к библиотекам вашего проекта. Щелкните правой кнопкой мыши проект> Путь сборки> Настроить путь сборки> Выбрать порядок и экспорт (вкладка)> Изменить порядок записей. Я надеюсь, что перемещение "JRE System Library" внизу будет работать. Это сработало для меня. Легко и просто .... !!!

3 голосов
/ 19 марта 2014

В моем случае произошло несоответствие между путем сборки JRE и установленным JRE в среде выполнения. Я перешел в Project> Properties> Java compiler. Внизу было предупреждение.

Я нажал на ссылки «Установленный JRE», «Среда выполнения», «Путь сборки Java» и изменил версию JDK на 1.7, а предупреждение исчезло.

0 голосов
/ 16 августа 2017

Добавление правильной системы JRE через путь сборки - это решение, но в вашем затмении все еще может быть ошибка. Чтобы решить эту проблему, перейдите в Java Build path -> Order and Export и переместите вашу системную библиотеку JRE вверху. Это решило мою проблему.

...