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



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



Access restriction: The type QName is not accessible due to restriction on required library C:Program FilesJavajdk1.5.0_16jrelibrt.jar



полное имя класса составляет javax.xml.namespace.QName



что здесь происходит?



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

636   15  

15 ответов:

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

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

это работает, потому что у вас есть несколько классов в разных файлах jar. Удаление и повторное добавление jre lib будет сделайте правильные классы быть первым. Если вы хотите фундаментальное решение, убедитесь, что вы исключаете файлы 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 - > Настройки - > Java - > Компилятор - > Ошибки / Предупреждения - >Устаревший и ограниченный API - > запрещенная ссылка (правила доступа): - > изменить на предупреждение

на Mac OS X / Linux: Eclipse - > Настройки - > Java - > Компилятор - > Ошибки / Предупреждения - >Устаревший и ограниченный API - > запрещенная ссылка (доступ правила): - > изменить на предупреждение

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

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

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

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

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

изменить http://www.manpagez.com/man/1/java/ примечания для опции " - Xbootclasspath:"

"приложения, которые используют этот параметр для переопределения класса в rt.jar не следует развертывать, так как это противоречит лицензии двоичного кода среды выполнения Java 2."

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

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

Я тоже получаю эту ошибку, но мой проект построен на командной строке с использованием 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>

дополнительную информацию можно найти в Tycho FAQ. Это заняло у меня годы, чтобы работать, поэтому я решил, что помогу кому-либо еще, пытаясь исправить эти ошибки ограничения доступа из командной строки, опубликовав этот ответ.

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

У меня тоже была эта проблема. По-видимому, я установил JRE в 1.5 вместо 1.6 в моем пути сборки.

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

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

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

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

для меня это, как я могу решить это:

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

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

  • выбираем "системная библиотека JRE [jdk1.8ххх]"
  • клик edit
  • и выберите либо " рабочее пространство по умолчанию JRE (jdk1.8xx)" или альтернативный JRE
  • Нажмите кнопку Готово
  • клик ОК

enter image description here

Примечание: убедитесь, что в Eclipse / Preferences (не проект) / Java / установлен JRE ,что jdk указывает на папку JDK, а не JRE C:\Program файлы\Java\jdk1.8. 0_74

enter image description here

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

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

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

в случае, если вы уверены, что вы должны иметь доступ к данному классу, чем это может означать, что вы добавили несколько банок в свой проект, содержащий классы с одинаковыми именами (или путями), но разным контентом, и они затмевают друг друга (как правило, старая пользовательская сборка 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--->Finish. Наконец, выберите заказ и экспорта вкладка выберите jre Lib и переместитесь сверху. Вот и все.

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

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

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

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

Comments

    Ничего не найдено.