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

StackOverflow https://stackoverflow.com/questions/860187

Вопрос

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

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

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

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

Это было полезно?

Решение

Есть еще одно решение, которое также работает.

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

Это работает, потому что у вас есть несколько классов в разных файлах jar.Удаление и повторное добавление библиотеки JRE сделает правильные классы первыми.Если вам нужно фундаментальное решение, убедитесь, что вы исключили файлы jar с теми же классами.

Для меня у меня есть: javax.xml.soap.SOAPPart в трёх разных баночках: axis-saaj-1.4.jar, saaj-api-1.3.jar и rt.jar

Другие советы

http://www.digizol.com/2008/09/eclipse-access-restriction-on-library.html у меня сработало лучше всего.

В Windows: Windows -> Preferences -> Java -> Compiler -> Ошибки/Предупреждения -> устаревший и ограниченный API -> Запретная ссылка (Правила доступа):-> перейти к предупреждению

В Mac OS X/Linux: Eclipse -> Preferences -> Java -> Compiler -> Ошибки/предупреждения -> устаревший и ограниченный API -> Запретная ссылка (Правила доступа):-> перейти к предупреждению

Я столкнулся с той же проблемой.Нашел ответ на сайте:http://www.17ext.com.
Сначала удалите системные библиотеки JRE.Затем снова импортируйте системные библиотеки JRE.

Я не знаю почему. Однако это решило мою проблему, надеюсь, это поможет вам.

Я предполагаю, что вы пытаетесь заменить стандартный класс, поставляемый с Java 5, классом из вашей библиотеки.

Это не разрешено условиями лицензионного соглашения, однако, AFAIK, это не применялось до Java 5.

Я видел это раньше с QName и «исправил» это, удалив класс из банки, которая у меня была.

РЕДАКТИРОВАТЬhttp://www.manpagez.com/man/1/java/ примечания к опции «-Xbootclasspath:»

«Приложения, использующие эту опцию с целью переопределения класса в rt.jar, не должны развертываться, поскольку это противоречит лицензии на двоичный код среды выполнения Java 2».

А http://www.idt.mdh.se/rc/sumo/aJile/Uppackat/jre/LICENSE

«Ограничения технологии Java.Вы не можете изменить интерфейс платформы Java («JPI», идентифицированные как классы, содержащиеся в пакете «Java», или любые подпакинги пакета «Java»), создав дополнительные классы в JPI или иным образом, вызывая дополнение к или модификации Занятия в JPI.В случае, если вы создаете дополнительный класс и связанный с ними API (ы), которые (i) расширяют функциональность платформы Java, и (ii) подвергается воздействию сторонних разработчиков программного обеспечения с целью разработки дополнительного программного обеспечения, которое вызывает такой дополнительный API Вы должны быстро опубликовать в целом точную спецификацию для такого API для бесплатного использования всеми разработчиками.Вы не можете создавать или авторизовать своих лицензиатов создавать, дополнительные классы, интерфейсы или подпакинги, которые каким -либо образом идентифицируются как «Java», «javax», «Sun» или аналогичное соглашение, как указано Sun в любом обозначении конвенции о именовании. "

Я тоже получаю эту ошибку, но мой проект построен в командной строке с использованием Maven и тихо компилятор (это набор плагинов OSGi).После массового просеивания людей, имеющих ту же проблему, но исправивших ее в Eclipse, а не в командной строке, я нашел сообщение на форуме разработчиков Tycho это ответило на мой вопрос, используя конфигурацию в pom.xml игнорировать предупреждение компилятора об ограничении доступа:

<plugin>
    <groupId>org.eclipse.tycho</groupId>
    <artifactId>tycho-compiler-plugin</artifactId>
    <version>${tycho.version}</version>
    <configuration>
        <compilerArgument>-warn:+discouraged,forbidden</compilerArgument>
    </configuration>
</plugin>

Более подробную информацию можно найти в Тихо Часто задаваемые вопросы.На это у меня ушло много времени, поэтому я решил помочь всем, кто попытается исправить эти ошибки ограничения доступа из командной строки, опубликовав этот ответ.

  • Перейдите к настройкам «Путь сборки» в свойствах проекта.Windows -> Preferences -> Java Compiler
  • Удалить системную библиотеку JRE
  • Добавьте еще одну JRE с «идеальным соответствием».
  • очистите и создайте свой проект заново.Это сработало для меня.

У меня тоже была эта проблема.Видимо, в моем пути сборки я установил JRE на 1,5 вместо 1,6.

В дополнение к Решение Нельса Бекмана, у меня есть следующие советы:

Под Настроить путь сборки, мне пришлось изменить порядок записей в разделе Заказ и экспорт.

Кроме того, как разработчику Eclipse PDE, мне нужно было изменить порядок зависимостей в моем файле. MANIFEST.MF, добавив проблемный пакет первым в список.

Игра с этими циферблатами и бег Проект > Очистить Между тем я смог устранить эти предупреждения.

для меня это то, как я это решаю:

  • пойти в построить путь текущего проекта

в разделе Библиотеки

  • выберите "Системная библиотека JRE [jdk1.8xxx]"
  • щелкнуть редактировать
  • и выберите «JRE по умолчанию для рабочей области (jdk1.8xx)». ИЛИ Альтернативная JRE
  • Нажмите «Готово»
  • Нажмите ОК

enter image description here

Примечание:убедитесь, что в Eclipse/Preferences (НЕ проект)/Java/Installed JRE что jdk указывает на папку JDK, а не на JRE C:\Program Files\Java\jdk1.8.0_74

enter image description here

Извините за обновление старого POST.Я получил сообщение о проблеме и решил ее, как указано ниже.

Предполагая, что вы используете плагин Eclipse + m2e maven, если вы получаете эту ошибку ограничения доступа, щелкните правой кнопкой мыши проект/модуль, в котором у вас есть ошибка -> Свойства -> Путь сборки -> Библиотека -> Заменить JDK/ JRE на тот, который используется в рабочей области Eclipse.

Я выполнил вышеуказанные шаги, и проблема решена.

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

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

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

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

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

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

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

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

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

В моем случае произошло несоответствие между путем сборки JRE и установленной JRE в среде выполнения.Я перешел в Проект > Свойства > Компилятор Java.Внизу было предупреждающее сообщение.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top